8、Springboot 集成Aop

1、引入aop maven依赖


注意:(1) 去除默认logging组件,因为我们框架已经更改使用log4j2;


           (2)引入依赖后AOP默认开启,无需再添加开启aop注解

8、Springboot 集成Aop

2、声明aop切面处理类(切面处理操作实现类) @Aspect @Component @Order(index)

8、Springboot 集成Aop

注:怎样声明一个自定义注解?要用到4个元注解:(具体实现方式不详细说明)

  • 注解保留位置 @Retention(RetentionPolicy.RUNTIME) RetentionPolicy.RUNTIME、SOURCE、CLASS

  • 注解作用目标 @Target(ElementType.METHOD) ElementType.TYPE、METHOD、FIELD、......

8、Springboot 集成Aop

  • 该注解将被包含在javadoc中 @Document

  • 子类可以继承父类中的该注解@Inherited

 

 

 

(2)execution表达式

  • execution(public * com.chn.frameweb.business.service.demo.demoServiceImpl.*(..)))

  • execution(public * com.chn.frameweb.business.service.demo.*.*(..)))

 

  • 详解 :

  1. 第一个 public 表示方法的修饰符,可以用*代替

  2. 第一个 * 表示 返回值,*代表所有

  3. public * com.chn.frameweb.business.service.demo.* 包路径,.*表示路径下的所有包;


也可指定具体的类com.chn.frameweb.business.service.demo.demoServiceImpl

  1. 第三个.* 表示路径下所有类或指定的类下, 类的所有方法(也可指定特定方法)

  2. (..) 表示不限方法参数

 

4、设置切面处理时间及绑定切点

 

  • @AfterReturning :方法执行后开始处理, pointcut="" 绑定切点

  • @Before :方法执行前开始处理,value="" 绑定切点

8、Springboot 集成Aop

5、@order配置参数说明


@order(index),index取值(0,1,2,3,......)

 

  • org.springframework.core.annotation.Order;

  • @Order的作用域可以是类、方法、类成员

  • 注解类,i值是,值越小,优先级越高

  • 注解AOP方法: @Before 是i值越小,优先级越高; @After或者@AfterReturning 中,i值越大,优先级越高