标签:tde oar 操作 product sde ota 操作符 参数 round
AspectJ 注解:
1、@Aspect、@Pointcut、Advice
@Aspect @Component public class SecurityAspect { @Autowired AuthService authservice; @Pointcut("@annotation(Adminonly)") public void adminonly() { } @Before("adminonly()") public void checkAccess() { authService.checkAccess(); } }
2、Pointcut expression:designators(指示符) 、wildcards(通配符)、operators(操作符)
designators :
匹配方法:execution()
匹配注解:@target()、@args()、@within()、@annotation()
匹配包/类型:within()
匹配对象:this()、bean()、target()
匹配参数:args()
wildcards(通配符):* 匹配任意数量的字符、+匹配指定类及其子类、..一般用于匹配任意数的子包或参数
operators(运算符):&&与操作符、||或操作符、!非操作符
5种Advice注解
1、@Before,前置通知
2、@After(finally),后置通知,方法执行完之后
3、@AfterReturning,返回通知,成功执行之后
4、@AfterThrowing,异常通知,抛出异常之后
5、@Aroud,环绕通知
匹配包/类型
@Pointcut(“within(com.imooc.service.ProductService)”) //匹配ProductService类里的所有方法 public void matchType(){} @Pointcut(“within(com.imooc..*)”) //匹配com.imooc包及子包下所有类的方法 public void matchPackage(){}
匹配对象
/**public class DemoDao implements IDao{}*/ 1、//匹配AOP对象的目标对象为指定类型的方法,即DemoDao的aop代理对象的方法 @Pointcut(“this(com.imooc.DemoDao)”) public void thisDemo(){} 2、//匹配实现IDao接口的目标对象(而不是aop代理后的对象)的方法,这里即DemoDao的方法 @Pointcut(“target(com.imooc.IDao)”) public void targetDemo(){} 3、//匹配所有以Service结尾的bean里的方法 @Pointcut(“bean(*Service)”) public void beanDemo(){}
匹配参数
//匹配任何以find开头而且只有一个Long参数的方法 @Pointcut(“execution(**..find*(Long))”) public void argsDemo1(){} //匹配任何只有一个Long参数的方法 @Pointcut(“args(Long)”) public void argsDemo2(){} //匹配任何以find开头而且第一个参数为Long型的方法 @Pointcut(“execution(**..find*(Long, ..))”) public void argsDemo3(){} //匹配第一个参数为Long型的方法 @Pointcut(“args(Long,..)”) public void argsDemo4(){}
匹配注解
//匹配方法标注有AdminOnly的注解的方法 @Pointcut(“@annotation(com.imooc.demo.security.AdminOnly)”) public void annoDemo(){} //匹配标注有Beta类底下的方法,要求的annotation的RetentionPolicy级别为CLASS @Pointcut(“@within(com.google.common.annotations.Beta)”) public void annoWithinDemo(){} //匹配方法标注有Respository的类底下的方法,要求的annotation的RetentionPolicy级别为RUNTIME @Pointcut(“@target(org.sprinframework.stereotype.Respository)”) public void annoTargetDemo(){} //匹配传入的参数类标注有Respository注解的方法 @Pointcut(“@args(org.sprinframework.stereotype.Respository)”) public void annoArgsDemo(){}
标签:tde oar 操作 product sde ota 操作符 参数 round
原文地址:https://www.cnblogs.com/wuchuan307/p/10799351.html