一、Spring的AOP的基于AspectJ的XML的开发
概述:IoC的目标是为了管理Bean ,而Bean是java面向对象(OOP)的基础设置。
1、AOP的概述
AOP:面向切面编程,是OOP的扩展和延伸,是用来解决OOP遇到问题。常用于数据库事务的编程,我们在做完第一步数据库数据更新后,不知道下一步是否成功,如果下一步失败,就使用数据库事务的回滚功能去回滚事务,使得第一步的数据跟新也作废。
怎么知道失败:以异常作为消息,如果接到了异常信息,就回滚,从而保证了数据的一致性。
所以Spring的事务管理中只要让它接收到异常信息,他就回滚,而不用通过代码去实现。屏蔽也数据库代码。
2、Spring的AOP底层的实现(自动调用)
JDK的动态代理:有接口的
Cglib的动态代理
3、AOP的相关术语
连接点:可以被拦截的点。
切入点:真正被拦截的点。
通知:增强方法
引介:类的增强
目标:被增强的对象
织入:将增强应用到目标的过程。
代理:织入增强后产生的对象
切面:切入点和通知的组合
3、AOP的入门开发
引入jar包
编写目标类并配置
编写切面类并配置
进行aop的配置
<!-- 定义目标对象:把目标对象交给Spring管理 -->
<bean id="userDao" class="com.dongtian.UserDao.UserDao" />
<!-- 定义aspect类 -->
<bean id="myAspect" class="com.dongtian.UserService.MyAspect"/>
<!-- 例如要增强save( )-->
<aop:config>
<aop:pointcut expression="execution(* com.dongtian.UserDao.UserDao.save(..))" id="pointcut1"/>
<aop:aspect ref="myAspect">
<aop:before method="before" pointcut-ref="pointcut1"/>
</aop:aspect>
</aop:config>
通知类型(aop: xxx)
前置通知 : before
后置通知 : afterReturning
环绕通知: around
异常抛出通知 :afterThrowing
最终通知: after
切入点表达式写法 execution(访问权限 返回值 包名.类名.法名(参数))
二、Spring的AOP的基于AspectJ注解开发
1、配置
2、目标类