springboot(5)AOP代理
1、启动aop代理
添加maven依赖
1 | <dependency> |
向springboot的入口类添加注解@EnableAspectJAutoProxy,使注解@Aspect生效。
2、aspect代理
1 |
|
3、pointcut表达式
常用的pointcut表达式为execution,格式如下:
execution([访问修饰符] 返回类型 [申明类型] 方法名(参数名) [异常名])
|表达式|效果|
|—–|—–|—–|
|execution(public * * (..))|任意公共方法|
|execution(* set* (..))|任意方法名以”set”开头的方法|
|execution(* com.wxtx.TestDao.* (..))|com.wxtx.TestDao类下的任意方法|
|execution(* com.wxtx.. (..))|com.wxtx包(不包括子包)下的任意方法|
|execution(* com.wxtx... (..))|com.wxtx包及其子包下的任意方法|
|within(com.wxtx.service.)|com.wxtx.service包(不包括子包)下的任意方法|
|within(com.wxtx.service..)|com.wxtx.service包(不包括子包)下的任意方法|
|this(com.wxtx.service.TestService)|实现了com.wxtx.service.TestService接口的代理对象的任意方法|
|target(com.wxtx.service.TestService)|实现了com.wxtx.service.TestService接口的目标对象的任意方法|
|args(java.io.Serializable)|任意只接受一个参数,且该参数类型是java.io.Serializable的方法|
|bean(testService)|spring容器中bean名为testSerivce的bean的任意方法|
|bean(Service)|spring容器中bean名匹配Serivce的bean的任意方法|