当前位置: 首页 > news >正文

辽源市网站建设_网站建设公司_定制开发_seo优化

长沙网站策划,口子网站怎么做,wordpress制作下拉菜单,最简单的网站系统目录 1. 理解AOP2 Before2.1 controller层2.2 service层2.3 自定义注解2.4 切面 advice 3 After4 Around spring的三大核心#xff1a;IOC控制反转、DI依赖注入、AOP面向切面编程 刚开始接触springboot项目#xff0c;前两个使用的多#xff0c;亲自使用AOP的机会并不多 Before2.1 controller层2.2 service层2.3 自定义注解2.4 切面 advice 3 After4 Around spring的三大核心IOC控制反转、DI依赖注入、AOP面向切面编程 刚开始接触springboot项目前两个使用的多亲自使用AOP的机会并不多在解决埋点bug时恰好遇到特此梳理出来 1. 理解AOP 补充一点这里切入就是插入的意思 参考博文点击查看 参考博文这篇文章的解释十分到位本文就不多赘述什么是AOP。这里原作者解释不够严谨记录操作日志应该在最后插入。 2 Before 2.1 controller层 RestController RequestMapping(/a) public class demo {Resourceprivate MyService myService;ResponseBodyRequestMapping(value /b, method RequestMethod.POST, produces text/html;charsetUTF-8)public void getPolicyFile(RequestParam(name) String name, RequestParam(age) Integer age) {myService.msgShow(name,age);} }2.2 service层 Loggable是自定义的注解 Service public class MyService {Loggablepublic void msgShow(String name,int age) {System.out.println(这是service的输出结果);}}2.3 自定义注解 /*** Description 定义注解Loggable*/ Target(ElementType.METHOD) Retention(RetentionPolicy.RUNTIME) Documented public interface Loggable {} 2.4 切面 advice Aspect Component public class LoggingAspect {// 定义一个切点自定义注解的路径表示被该注解修饰的方法都会注入advicePointcut(annotation(com.zjh.practice.AOP.Loggable))private void logPointcut() {}// joinPoint的作用就是获取msgShow()方法的参数Before(logPointcut())public void logadvice(JoinPoint joinPoint){// 这里只是一个示例你可以写任何处理逻辑System.out.println(---------Before触发了----------);// 获取签名Signature signature joinPoint.getSignature();// 获取切入的包名String declaringTypeName signature.getDeclaringTypeName();// 获取即将执行的方法名String funcName signature.getName();System.out.println(String.format(即将执行方法为: %s 属于%s包, funcName, declaringTypeName));Object[] args joinPoint.getArgs();String itemName (String) args[0];int quantity (int) args[1];System.out.println(String.format(获取的参数是%s,%d,itemName,quantity));} } 输出效果 ---------Before触发了---------- 即将执行方法为: msgShow 属于com.zjh.practice.AOP包 获取的参数是张三21 这是service的输出结果 3 After 将Before 换成 After 有什么变化吗 输出效果 这是service的输出结果 注意这条输出的位置 ---------After触发了---------- 即将执行方法为: msgShow 属于com.zjh.practice.AOP包 获取的参数是张三21 4 Around Before只能控制在方法前执行After只能控制在方法后执行那若想一起控制呢就必须使用Around 假设你有一个服务类 MyService其中有一个 divide 方法执行除法操作。我们将创建一个 Around 切面拦截这个方法的执行执行一些自定义逻辑处理方法之前和之后的情况以及异常。以下是例子 Aspect Component public class DivisionAspect {Around(execution(* com.example.service.MyService.divide(..)))public Object aroundDivideOperation(ProceedingJoinPoint joinPoint) throws Throwable {// 在方法执行前System.out.println(执行除法操作前);try {// 获取方法参数Object[] args joinPoint.getArgs();if (args.length 2 (int) args[1] 0) {// 自定义逻辑处理除以零的情况System.out.println(检测到除以零。返回默认结果。);return 0;}// 继续执行原始方法Object result joinPoint.proceed();// 在方法执行后System.out.println(执行除法操作后);// 如果需要可以修改或替代原始结果// 为简单起见我们将原始结果无修改地返回return result;} catch (Exception e) {// 异常处理记录异常并重新抛出System.out.println(执行除法操作时发生异常 e.getMessage());throw e;} finally {// 清理或额外的逻辑无论如何都会执行System.out.println(在执行除法操作后的finally块);}} } 现在假设你有一个 MyService 类如下 package com.example.service;import org.springframework.stereotype.Service;Service public class MyService {public int divide(int dividend, int divisor) {// 模拟除法操作return dividend / divisor;} }
http://www.ihoyoo.com/news/40372.html

相关文章:

  • 芜湖网站建设芜湖狼道岳阳市内从事网站建设的公司
  • 个人网站logo设计工程建设管理
  • 西双版纳网站建设公司网站建设的教程视频
  • 网站导航这么做宁波数控机械加工网
  • 做网站首选科远网络大连哪家做网站比较好
  • 网站开发四个重点互联网技术网站
  • 中国铁路保险网站郑州哪里教做网站
  • 农业网站设计台州网站制作网站建设
  • 响应式网站居中建设网站要多长时间
  • 网站建设 笔记wordpress静态资源加载不
  • 网站运营是干什么的贡嘎网站建设
  • 吴忠建设局网站益阳网站建设益阳
  • 网站内链结构是什么意思策划行业网站
  • 网站设计与开发网站策划游戏网页制作模板
  • 岳阳网站建设制作教育网站网址
  • 优秀网站设计案例分析emlog文章转wordpress
  • 校园网站怎么建百度推广需要什么条件
  • 浦江做网站中国住建部网站查询网
  • 苏州网站关键词优化中国城乡建设部网站首页
  • 网站 搜索怎么实现全网浏览器
  • 招标网站有哪些诸暨广川建设公司网站
  • 庭院设计网站推荐创客贴网站建设
  • 网站建设图片怎么加水印温州网站建设优化
  • 国外flash网站公众号 转 wordpress
  • 哪个网站的域名到期直接注册免费海外网站建设
  • 做企业网站设手机百度极速版
  • 做兼职比较好的网站有哪些企业建设网站目的
  • 中国建设银行积分商城网站用什么软件做网站
  • 重庆做网站建设公司排名科普网站设计
  • 企业建站公司案例展厅搭建公司