读书人

宣言事务2种方式

发布时间: 2012-10-29 10:03:53 作者: rapoo

声明事务2种方式
spring声明式事务管理的两种方式


传统的:

1 <bean id="dataSource" destroy-method="close">

2 <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" />

3 <property name="url" value="jdbc:oracle:thin:@127.0.0.1:1521:dev" />

4 <property name="username" value="kaktos" />

5 <property name="password" value="kaktos" />

6 </bean>

7

8 <bean id="txManager"

9 ref="dataSource" />

11 </bean>

12

13 <bean id="businessBean"

14 ref="txManager" />

16 <property name="target" ref="businessBeanTarget" />

17 <property name="transactionAttributes">

18 <props>

19 <prop key="*">PROPAGATION_REQUIRED</prop>

20 </props>

21 </property>

22 </bean>

23

24 <bean id="businessBeanTarget" ref="dataSource" />

26 </bean>

这样做的弊端就是不得不为每个需要事务的bean做一次声明,如果所有的bean都基本上有一致的配置,这样就太繁琐啦。

下面是第二种方式:

1 <beans>

2 <bean id="dataSource" destroy-method="close">

3 <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" />

4 <property name="url" value="jdbc:oracle:thin:@127.0.0.1:1521:dev" />

5 <property name="username" value="kaktos" />

6 <property name="password" value="kaktos" />

7 </bean>

8

9 <bean id="txManager"

10 ref="dataSource" />

12 </bean>

13

14 <bean id="matchAllWithPropReq"

15 value="PROPAGATION_REQUIRED" />

17 </bean>

18

19 <bean id="matchAllTxInterceptor" ref="txManager" />

21 <property name="transactionAttributeSource" ref="matchAllWithPropReq" />

22 </bean>

23

24 <bean id="autoProxyCreator"

25 />

29 </list>

30 </property>

31 <property name="beanNames">

32 <list>

33 <idref local="businessBean" />

34 </list>

35 </property>

36 </bean>

37

38 <!-- my beans -->

39 <bean id="businessBean" ref="dataSource" />

41 </bean>

42 </beans>

读书人网 >软件架构设计

热点推荐