Spring 2.0 事務(wù)處理方式: http://www.aygfsteel.com/algz/articles/262941.html
前者: 都需創(chuàng)建HibernateTransactionManager類.
<bean id="transactionManager"class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory">
<ref local="sessionFactory" />
</property>
</bean>
(一)org.springframework.transaction.interceptor.TransactionProxyFactoryBean: 創(chuàng)建代理事務(wù).
事務(wù)代理Bean:
1
<bean id="userDAOProxy" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
2
<property name="transactionManager">
3
<ref bean="transactionManager" />
4
</property>
5
<property name="target">
6
<ref local="userDAO" />
7
</property>
8
<property name="transactionAttributes">
9
<props>
10
<prop key="insert*">PROPAGATION_REQUIRED</prop>
11
</props>
12
</property>
13
</bean>

2

3

4

5

6

7

8

9

10

11

12

13

引用代理Bean:
1
<bean name="/login" class="com.test.struts.action.LoginAction" singleton="false">
2
<property name="userDAO"> <!--這里的userDAO是LoginAction的屬性-->
3
<ref bean="userDAOProxy" /> <!--ref bean=userDAO, 調(diào)用的是原來(lái)的Bean, 則不是在事務(wù)中運(yùn)行-->
4
</property>
5
</bean>

2

3

4

5

(二)org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator: 根據(jù)BeanName自動(dòng)創(chuàng)建事務(wù)代理
org.springframework.transaction.interceptor.TransactionInterceptor: 攔截器
1
<!-- 無(wú)需引用代理BEAN(bean id 可去掉),業(yè)務(wù)層(/login)可直接調(diào)用原來(lái)的Bean==>userDAO(userDAO已封裝入事務(wù)) -->
2
<bean class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
3
<property name="beanNames">
4
<value>userDAO</value>
5
</property>
6
<property name="interceptorNames">
7
<list>
8
<value>transactionInterceptorName</value>
9
</list>
10
</property>
11
</bean>
12
13
<!-- 攔截器,定義事務(wù)策略 -->
14
<bean id="transactionInterceptorName" class="org.springframework.transaction.interceptor.TransactionInterceptor">
15
<property name="transactionAttributes">
16
<props>
17
<prop key="*">PROPAGATION_REQUIRED</prop> <!--事務(wù)策略定義-->
18
</props>
19
</property>
20
<property name="transactionManager">
21
<ref local="transactionManager" />
22
</property>
23
</bean>

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23
