都说声明式事务管理是基于AOP的 但是我不明白 我调用我的代码 spring是怎么插一杠子 加上事务 财富值28

2016-10-24 14:03发布

Spring提供的事务管理有两种方式,编程式的和声明式的. 编程式的繁琐,我一般不喜欢用.
最喜欢的一种是利用Spring封装的aspectJ, 利用Aop来管理事务很方便的.

applicationcontext.xml
1首先创建一个事务管理器
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">

<property name="sessionFactory" ref="sessionFactory">   </property>  

</bean>

2声明一个通知, 并声明此通知受某一个事务管理器管理
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="save*" />
<tx:method name="*" readonly="true" />
</tx:attributes>
</tx:advice>

上面的一段话说明了txAdvice受transactionManager事务管理器管理, 并且管理save打头的方法. 其余的都不使用事务管理.

3最后利用advisor配置advice的切入点.
<aop:config>
<aop:advisor advice-ref="txAdvice"

           pointcut="execution(pulic * *..*.service.*.*(..))">  

</aop:advisor>
</aop:config>

这样, 只要经过service层就会进入事务管理.
(begin - save - commit)动态代理

我想问为什么 经过service层就会进入事务管理 别说动态代理 具体是怎么做的

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
2条回答

我想这个问题的关键在于理解AOP上。

面向切面(AOP)的实现很大程度上依赖的是控制扭转(IOC),这两个概念就不详细说了,百度一下都能找到。

一周热门 更多>