Annotation(注解)的方式对AOP的支持

         spring采用Annotation的方式对AOP的支持:

          导入aspectj包

         声明该类为切面:@aspect

          <aop:aspectj-autoproxy/>启用注解的支持

            创建4个对象:InvocationHandler类对象,目标类对象,切面对象,代理对象

           AOP注解的动态代理:

              1.首先我们目标类实现接口,

              2.切面类标识@aspect

              3.定义@PointCut标识哪些方法要用到advice, 这个pointcut是个空实现,且不能有参数签名:目标类中只要有PointCut过滤的方法就执行advice

              4.用@Before("PonitCut"),执行invoke,把advice织入到目标类对应的方法中.
         由于spring开启了AOP,且AOP中的切面类中已经声明了PointCut这个注解,那PointCut所过滤的方法只要在目标对象执行的方法中存在,那不会创建目标类,会创建目标类的代理对象,并通过代理对象的给目标对象的方法织入advice。这样就通过注解实现了AOP。

         另外:由于已经创建了代理对象,那调用PointCut中没有存在的方法,依然会执行invoke,只是不会为该方法织入advice。

      

        
        

             

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值