码迷,mamicode.com
首页 > 其他好文 > 详细

AOP

时间:2015-04-10 21:55:34      阅读:200      评论:0      收藏:0      [点我收藏+]

标签:

连接点(Joinpoint):(定位到某个方法上+方位为某个方法的前、后..)程序执行的某个特点位置,如类开始初始化前、初始化后、某个方法调用前、调用后、方法抛出异常后,一个类或一段程序代码拥有一些具有边界性质的特定点,Spring只支持方法的连接点。

技术分享

切点(Pointcut)(定位到哪个方法上)如果希望定位到具体的连接点上,还需要提供方位信息

增强(Advice)(方位为某个方法的前、后..)

目标对象(Target):增强逻辑的织入目标类

引介(Introduction):是一种特殊的增强,为类添加一些属性方法,如为一个未实现某接口的业务类动态地添加接口的实现逻辑

织入(Waving):将增强添加对目标类具体连接点上的过程,将目标类、增强或引介通过AOP编织在一起。AOP有三种织入方式:

  1. 编译器织入,这要求使用特殊的Java编辑器
  2. 类装载期织入,这要去使用特殊的类装载器
  3. 动态代理织入,在运行期间为目标类添加增强生成子类的方式

Spring采用动态代理织入

代理(Proxy)

技术分享

切面(Aspect):(定位到某个方法上+方位为某个方法的前、后..的代码

技术分享

AOP的工作重心在于如何将增强应用于目标对象的连接点上,这里包括两个工作:

  1. 如何通过切点和增强定位到连接点上(基于JDK的动态代理(只提供接口的代理)和基于CGLib的动态代理)
  2. 如何在增强中编写切面的代码

 Spring AOP通过Pointcut(切点)指定在哪些类的哪些方法上织入横切逻辑,通过Advice(增强)描述横切逻辑和方法的具体织入点(方法前、方法后、方法的两端等)。此外,Spring通过Advisor(切面)将Pointcut和Advice两者组装起来,有了Advisor的信息,Spring就可以利用动态代理技术采用统一的方式为目标Bean创建织入切面的代理对象了。 

增强类型:

技术分享

 

 

技术分享

技术分享

技术分享

 

切点类型:

技术分享

技术分享

 

切面类型:

技术分享

 

 技术分享

 

  <!-- 配置事务通知属性 -->  
    <tx:advice id="txAdvice" transaction-manager="transactionManager">  
        <!-- 定义事务传播属性 -->  
        <tx:attributes>  
            <tx:method name="insert*" propagation="REQUIRED" />  
             ...
        </tx:attributes>  
    </tx:advice>  
      
   
    <!-- 配置事务切面 -->  
    <aop:config>  
        <aop:pointcut id="serviceOperation"  
            expression="execution(* ..*.*(..))" />  
        <aop:advisor advice-ref="txAdvice" pointcut-ref="serviceOperation" />  
    </aop:config>  

 

AOP

标签:

原文地址:http://www.cnblogs.com/QinH/p/4415594.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!