它利用一种称为"横切"的技术,能够剖解开封装的对象内部,并将那些影响了多个类并且与具体业务无关的公共行为 封装成一个独立的模块(称
为切面)。更重要的是,它又能以巧夺天功的妙手将这些剖开的切面复原,不留痕迹的融入核心业务逻辑中。这样,对于日后横切功能的编辑和重用都能够带来极大
的方便。 AOP技术的具体实现,无非也就是通过动态代理技术或者是在程序编译期间进行静态的"织入"方式。下面是这方面技术的几个基本术语:
1、join point(连接点):是程序执行中的一个精确执行点,例如类中的一个方法。它是一个抽象的概念,在实现AOP时,并不需要去定义一个join point。
2、point cut(切入点):本质上是一个捕获连接点的结构。在AOP中,可以定义一个point cut,来捕获相关方法的调用。
3、advice(通知):是point cut的执行代码,是执行“方面”的具体逻辑。
4、aspect(切面):point cut和advice结合起来就是aspect,它类似于OOP中定义的一个类,但它代表的更多是对象间横向的关系。
引入jar包
aopalliance.jar
aspectjweaver.jar
spring-aop-3.2.16.RELEASE.jar
SpringConfig.xml中配置
<!-- 定义切面程序 -->
<!-- 编写切面组件类 -->
<bean id="thelog" class="Aop.AopText"></bean>
<!-- 切入
<aop:config>
<aop:pointcut expression="execution(* biz.*.*(..))" id="pointcut"/>定义切入点
<aop:aspect ref="thelog">
<aop:before method="Before" pointcut-ref="pointcut"/>
把切面程序中的Before方法,在程序运行前切入到满足 biz.*.*(..)) 条件的类的方法中
<aop:after-returning method="after" returning="result" pointcut-ref="pointcut"/>调用方法后切入
<aop:after-throwing method="aerror" pointcut-ref="pointcut" throwing="ex"/> 程序报错时加入异常程序
</aop:aspect>
</aop:config>
-->
AopText.中的方法
一般情况加入注解来使用
SpringConfig.xml中配置
<!-- 定义切面程序 -->
<!-- 编写切面组件类 -->
<bean id="thelog" class="Aop.AopText"></bean>
<aop:aspectj-autoproxy></aop:aspectj-autoproxy>
AopText中 同上图所示