使用Spring AOP代理方式实现声明式事务的原理

使用Spring AOP代理方式实现声明式事务的原理
悬赏分:10 | 提问时间:2009-7-3 17:35 | 提问者:windto7sea

<bean id="myTransactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory">
<ref local="gwssiSessionFactory"/>
</property>
</bean>

<bean id="transactionProxyFactoryBean" abstract="true" lazy-init="true" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
<property name="transactionManager">
<ref bean="myTransactionManager"/>
</property>
<property name="transactionAttributes">
<props>
<prop key="*">PROPAGATION_REQUIRED</prop>
<!--<prop key="get*">PROPAGATION_REQUIRED,readOnly</prop>
<prop key="set*">PROPAGATION_REQUIRED,readOnly</prop>-->
</props>
</property>
</bean>


这段代码倒是看得眼睛都腻了 可是到底原理是什么? 配置这么多东西 是如何触发的呢? 请高手赐教啊........

推荐答案

首先将sessionFactory注入到HibernateTransactionManager中,再将HibernateTransactionManager对象注入到TransactionProxyFactoryBean对象中~应该还有一段对sessionFactory的定义

AOP就是面向代理的模式,本来一个应用程序要对某个对象进行操作的,但是这个对象中包含了很多与他本身不相关的业务逻辑,不如日志、锁等等。所以就要想办法把这些无关的东西全部抽离出来。被抽离过的对象就是被代理对象。

此时应用程序再调用的时候,会去调用代理对象,这个对象中包含了对被代理对象的调用以及被抽离出来的无关的业务逻辑方法。被代理对象则是纯粹的业务逻辑。

至于触发的话因为在容器起来的时候,比如tomcat或者jboss,会定义到指定的xml文件然后这些谁注入到谁的东西会被自动识别的。

回答时间:2009-7-4 15:45
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值