spring AOP切面开发 基于aspectJ框架切点开发

本文介绍如何利用Spring框架整合AspectJ实现AOP(面向切面编程)。具体包括AspectJ的特点、配置方法及XML编写步骤,同时给出了切点表达式的实例。



Spring整合aspectj框架实现的aop


aspectj框架的配置我就不说了,大家可以自己百度一下,挺简单的


给大家讲一下怎么样使用


用aspectj框架来实现

该框架的特点:

1,可以不用写生成的动态代理的对象.

2,可以写多个切点和多个通知

3,aspectj有六种通知类型

1.     前置通知Before 相当于BeforeAdvice

2.     后置通知AfterReturning 相当于AfterReturningAdvice

3.     环绕通知 Around 相当于MethodInterceptor

4.     抛出通知AfterThrowing 相当于ThrowAdvice

5.     引介通知DeclareParents 相当于IntroductionInterceptor

6.     最终通知After 不管是否异常,该通知都会执行

并且aspectj框架,可以用通知可以不用实现接口



Aspect框架的xml编写

只需要三步

1,定义一个通知对象

2,定义一个目标对象

3,用aop标签(切面),在中间定义切点和添加通知对象,然后就可以了




Aspectj框架会自己创建动态代理

 

    <!-- 目标对象 -->

    <bean id="userService" class="cmo.demo.aspectj.UserService"></bean>

    <!-- 通知对象 -->

    <bean id="userServiceAdvice" class="cmo.demo.aspectj.UserHapler"></bean>

    <!-- 声明切面和切点 -->

   

    <!-- 使用aop:config来声明  使用aop:aspect来配置切面,  设置true不管使用什么都用cglib,false不使用接口的时候会用jdkproxy来代理 -->

    <aop:config proxy-target-class="true">

       <aop:aspect ref="userServiceAdvice">

       <aop:pointcut expression="execution(**Test(..))" id="TestPointCut"/>

       <aop:before method="before"pointcut-ref="TestPointCut"/>

       </aop:aspect>

    </aop:config>

由标签决定 aop:before前置通知   aop:around环绕通知   aop:after后置通知等 .....  记住一定要配置的属性:method要和通知方法名字相同, pointcut-ref:设置的切点

 


关于切点表达式写法

1.     execution(public * *()) 所有的public的方法

2.     execution(*cn.itheima.aop.*(..)) 所有的aop包下的所有类的方法(不包含子包)

3.     execution(*cn.itheima.aop..*(..)) 所有的aop包及其子包下的所有类的方法

4.     execution(*cn.itheima.aop.IOrderService.*(..)) IOrderService接口中定义的所有方法

5.     execution(*cn.itheima.aop.IOrderService+.*(..)) 匹配实现特定接口所有类的方法

6.     execution(*save*(..)) 区配所有的以save开头的方法









评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值