Spring 面向切面编程

它利用一种称为"横切"的技术,能够剖解开封装的对象内部,并将那些影响了多个类并且与具体业务无关的公共行为 封装成一个独立的模块(称
为切面)。更重要的是,它又能以巧夺天功的妙手将这些剖开的切面复原,不留痕迹的融入核心业务逻辑中。这样,对于日后横切功能的编辑和重用都能够带来极大
的方便。    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中 同上图所示

  

窗竹影摇书案上,野泉声入砚池中。 少年辛苦终身事,莫向光阴惰寸功
原文地址:https://www.cnblogs.com/qhantime/p/10746249.html