1、引入aop maven依赖
注意:(1) 去除默认logging组件,因为我们框架已经更改使用log4j2;
(2)引入依赖后AOP默认开启,无需再添加开启aop注解
2、声明aop切面处理类(切面处理操作实现类) @Aspect @Component @Order(index)
注:怎样声明一个自定义注解?要用到4个元注解:(具体实现方式不详细说明)
-
注解保留位置 @Retention(RetentionPolicy.RUNTIME) RetentionPolicy.RUNTIME、SOURCE、CLASS
-
注解作用目标 @Target(ElementType.METHOD) ElementType.TYPE、METHOD、FIELD、......
-
该注解将被包含在javadoc中 @Document
-
子类可以继承父类中的该注解@Inherited
(2)execution表达式
-
execution(public * com.chn.frameweb.business.service.demo.demoServiceImpl.*(..)))
-
execution(public * com.chn.frameweb.business.service.demo.*.*(..)))
-
详解 :
-
第一个 public 表示方法的修饰符,可以用*代替
-
第一个 * 表示 返回值,*代表所有
-
public * com.chn.frameweb.business.service.demo.* 包路径,.*表示路径下的所有包;
也可指定具体的类com.chn.frameweb.business.service.demo.demoServiceImpl
-
第三个.* 表示路径下所有类或指定的类下, 类的所有方法(也可指定特定方法)
-
(..) 表示不限方法参数
4、设置切面处理时间及绑定切点
-
@AfterReturning :方法执行后开始处理, pointcut="" 绑定切点
-
@Before :方法执行前开始处理,value="" 绑定切点
5、@order配置参数说明
@order(index),index取值(0,1,2,3,......)
-
org.springframework.core.annotation.Order;
-
@Order的作用域可以是类、方法、类成员
-
注解类,i值是,值越小,优先级越高
-
注解AOP方法: @Before 是i值越小,优先级越高; @After或者@AfterReturning 中,i值越大,优先级越高