Spring中的AOP理解
来源:互联网 发布:php require 编辑:程序博客网 时间:2024/05/01 03:12
1、术语的理解
切面 :首先建立一个切面,相当于一个过滤器之类的东西,就是对于某一种功能上的需求进行判断,并分为不同的情况来处理。
连接点:对这一类问题中的某些方法,可能要穿过这个切面去执行,会在切面上进行判断。它只是连接点,但还不确定是否要切入切面。
切入点:是一个断言,并且他对应一个通知,它会去判断切入点,用此断言去判断切入点,也就是方法,当这个方法满足它的需求的时候,如以XXX开头,然后就会执行通知,通知某一组件去执行某一通用的操作。
通知:在切入点执行的动作,共有三种,Around,Before,After。也就是在连接点(方法)执行的前,后,或来回吧,也就是前后都有,功能强大,去执行某一个动作。
目标对象:当符合切入点的时候,就会通知它去执行一些操作,因为AOP是通过动态代理来执行的,所以,它是一个代理对象。
引入:官方说明:Spring允许引入新的接口(以及一个对应的实现)到任何被代理的对象。我的理解就是对目标对象所执行的操作的一个规范比如对增加、修改、查询要开启事务。
织入:就是把切面配置到应用程序中,并创建目标对象,也就是被通知对象,就是符合条件要执行的操作。
2、对应实际的配置进行分析
<!-- 配置事务管理器-->
<bean id="transactionManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory">
<ref bean="sessionFactory" />
</property>
</bean>
<!-- 配置事务的传播特性-->
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="save*" propagation="REQUIRED"/>
<tx:method name="update*" propagation="REQUIRED"/>
<tx:method name="delete*" propagation="REQUIRED"/>
</tx:attributes>
</tx:advice>
<!-- 那些类的哪些方法参与事务 -->
<aop:config>
<aop:pointcut id="allManagerMethod"
expression="execution(* org.jsoft.services.impl.*.*(..))"/>
<aop:advisor pointcut-ref="allManagerMethod" advice-ref="txAdvice" />
</aop:config>
上面是Spring处理事务的AOP部分,可以看出来:
1、 切入点PointCut通过Expression断言来判断org.jsoft.services.impl包下的所有类的方法,具体的断言内容在advice-ref="txAdvice"里面,也就是方法的判断,然后去通知事务管理器。
2、 或者这样看,这里有一个通知者<aop:advisor,它有两部分组成,第一个要处理的切入点,pointcut-ref="allManagerMethod",就是要对哪些连接点,也就是哪些类下的哪些方法,第二个是具体的判断要求和要执行的操作。也就是advice-ref="txAdvice",它对于不同的情况有不同的目标对象,也就是此处的事务管理器。
3、 整个流程就是这样,切面,它也就像一个中间的过滤器,用来过滤方法,也就是连接点,切面有自己的过滤范围,也就是切入点的配置范围,同时切入点有自己的if条件,当满足某种条件的时候,也就是符合切入点,符合断言,然后就去通知目标对象,也就是一个类去执行某些操作。这就是AOP,引入是对目标对象的规定,规定他要做什么;织入,也就是配置切面和切入点,并创建目标对象,也就是一个处理的类。
- Spring中的AOP理解
- Spring中的AOP理解
- 个人理解中的 Spring AOP
- 如何理解spring中的IOC和AOP
- 如何理解spring中的IOC和AOP
- 如何理解spring中的IOC和AOP
- 理解Spring中的IOC和AOP
- spring aop的理解
- Spring AOP 理解老
- Spring AOP概念理解
- spring aop 理解
- Spring AOP 理解
- 初步理解spring aop
- Spring AOP的理解
- spring AOP理解
- Spring-理解AOP
- 深入理解Spring AOP
- spring AOP个人理解
- @protocol和category中如何使用@property?
- 【学习 OpenCV】—— 图像减色(color reduced)
- NSIS Error:Error writing temporary file. Make sure your temp folder is valid的解决
- Euler算法
- 隐式类型转换
- Spring中的AOP理解
- mysql innodb 引擎 key - 和 Primary key的区别 以及 索引的用法总结
- FZU 2140 Forever 0.5 (几何_思维)
- 15 个非常棒的 CSS3 效果教程
- 矩阵问题总结
- HDU 2083
- Light OJ 1302 Independent Attacking Zones(分治或DP)
- 【APPGAMEKIT2】使用C++语言编写的UNO牌游戏
- 计算机组成简介