spring学习笔记(五)——AOP part2

慕课网,揭秘Spring AOP,https://www.imooc.com/video/15680

第二章 Spring AOP使用详解

切面表达式

通配符

  • *:匹配任意数量的字符
  • +:匹配指定类及其子类
  • ..:匹配任意数量的子包或参数

运算符

&&、||、!,与、或、非

within表达式:匹配包/类型

import org.aspectj.lang.annotation.Pointcut;
    
    //匹配com.imooc包及子包下所有类的方法
    @Pointcut("within(com.imooc..*)")
    public void matchPackage(){}
    
    //匹配ProductService类里所有的方法
    @Pointcut("within(com.imooc.service.ProductService)")
    public void matchType(){}

匹配对象

    /**
     * public class DemoDao implements IDao{}
     */
    //匹配AOP对象的目标对象为指定类型的方法,即DemoDao的aop代理对象的方法
    @Pointcut("this(com.imooc.DemoDao)")
    public void thisDemo(){}
    
    //匹配实现IDao接口的目标对象(而不是aop代理后的对象)的方法,这里即DemoDao的方法
    @Pointcut("target(com.imooc.IDao)")
    public void targetDemo(){}
    
    //匹配所有以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 argsDemo2(){}

    //匹配第一个参数是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 annoWithDemo(){}

    //匹配标注有Repository类底下的方法,要求的annotation的RetentionPolicy级别为RUNTIME
    @Pointcut("@target(org.springframework.stereotype.Repository)")
    public void annoTargetDemo(){}

    //匹配传入的参数类标注有Repository注解的方法
    @Pointcut("@args(org.springframework.stereotype.Repository")
    public void annoArgsDemo(){}

execution表达式

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值