springboot aop注解,springmvc自定义注解实现aop

  springboot aop注解,springmvc自定义注解实现aop

  

  写爬虫互联网协议(互联网协议)被封了怎么解决?立即使用

  切面:Aspect

  切面=切入点通知。在老的春天版本中通常用可扩展标记语言配置,现在通常是一个类带上@Aspect注解。切面负责将横切逻辑(通知)编织到指定的连接点中。

  目标对象:Target

  将要被增强的对象。

  连接点:JoinPoint

  可以被拦截到的程序执行点,在春天中就是类中的方法。

  切入点:PointCut

  需要执行拦截的方法,也就是具体实施了横切逻辑的方法。切入点的规则在春天中通过实现切入点表达式语言来描述。

  切入点与连接点的区别:连接点是所有可以被切的点;切入点是真正要切的点。

  通知:Advice

  针对切入点的横切逻辑,包含"周围"、"之前"和"之后"等不同类型的通知。

  通知的作用点如其命名:

  之前:在切入点之前执行

  之后:在切入点之后执行

  周围:在切入点拦截方法,自定义前后,更灵活

  还有一些异常处理的通知,这里不一一举例

  织入:Weaving

  将切面和目标对象连接起来,创建代理对象的过程春天。中用的是动态代理。假如目标对象有接口,使用爪哇岛开发工具包动态代理;否则使用字节码生成动态代理。

  说了这么多概念,看看代码实现可能会使读者理解的更深刻一些,这里简单写一个通过注解增强方法的面向切面编程演示版。

  首先是切面类:

  包com。举例。演示。AOP

  导入org。AspectJ。郎。连接点;

  导入org。AspectJ。郎。proceedingjoinpoint

  导入org。AspectJ。郎。注释。*;

  导入org。spring框架。刻板印象。组件;

  /**

  * @作者博达大桥

  * @日期2020年6月20日

  * @描述切面类=切入点通知

  */

  @Aspect

  @组件

  公共类对数方面

  //这个方法定义了切入点

  @ Pointcut( @ annotation(com。举例。演示。AOP。没有。mylog))

  公共空的切入点(){}

  //这个方法定义了具体的通知

  @After(pointCut())

  public void recordRequestParam(连接点连接点){

  for(对象s:连接点。get args()){

  //打印所有参数,实际中就是记录日志了

  系统。出去。println( after advice: s );

  }

  }

  //这个方法定义了具体的通知

  @Before(pointCut())

  公共void startRecord(连接点连接点){

  for(对象s:连接点。get args()){

  //打印所有参数

  系统。出去。println(在建议之前: s ).

  }

  }

  //这个方法定义了具体的通知

  @Around(pointCut())

  公共对象环绕记录(过程连接点pjp)抛出可投掷的

  for (Object s : pjp.getArgs()) {

  //打印所有参数

  系统。出去。println( around advice:s);

  }

  返回pjp。proceed();

  }

  }注解:

  包com。举例。演示。AOP。安诺;

  导入Java。郎。注释。*;

  /**

  * @作者博达大桥

  * @日期2020年6月20日

  * @描述

  */

  @已记录

  @保留(保留政策.运行时间)

  @Target({ElementType .方法,元素类型.类型})

  public @interface MyLog {

  }目标类:

  包com。举例。演示。AOP。目标;

  导入com。举例。演示。AOP。没有。我的日志;

  导入org。spring框架。网络。绑定。注释。请求映射;

  导入org。spring框架。网络。绑定。注释。请求参数;

  导入org。spring框架。网络。绑定。注释。休息控制器;

  /**

  * @作者博达大桥

  * @日期2020年6月20日

  * @描述

  */

  @RestController

  公共类模拟控制器{

  @RequestMapping(/hello )

  @MyLog

  公共字符串你好AOP(@ request param String key){

  System.out.println(做点什么.);

  返回《hello world》;

  }

  }最后是测试类:

  包com。举例。演示。AOP。目标;

  导入org。朱尼特。木星。API。测试;

  导入org。spring框架。豆子。工厂。注释。自动连线;

  导入org。spring框架。靴子。测试。语境。弹簧靴测试;

  /**

  * @作者博达大桥

  * @日期2020年6月20日

  * @描述

  */

  @SpringBootTest

  类模拟控制器测试{

  @自动连线

  模拟控制器;

  @测试

  void helloAop() {

  模拟控制器。hello AOP( AOP );

  }

  }控制台结果:

  推荐教程:以上《Java教程》是Spring AOP注释的详细内容,更多请关注我们的其他相关文章!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: