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

------------------------------------------------------------------
来源:优快云发布会员:新书城收集整理发布时间:2006-10-14人气:148

传统的:

1<beanid="dataSource"destroy-method="close">

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

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

4<propertyname="username"value="kaktos"/>

5<propertyname="password"value="kaktos"/>

6</bean>

7

8<beanid="txManager"

9class="org.springframework.jdbc.datasource.DataSourceTransactionManager">

10<propertyname="dataSource"ref="dataSource"/>

11</bean>

12

13<beanid="businessBean"

14class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">

15<propertyname="transactionManager"ref="txManager"/>

16<propertyname="target"ref="businessBeanTarget"/>

17<propertyname="transactionAttributes">

18<props>

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

20</props>

21</property>

22</bean>

23

24<beanid="businessBeanTarget">

25<propertyname="dataSource"ref="dataSource"/>

24 </bean>

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

下面是第二种方式:

1<beans>

2<beanid="dataSource"destroy-method="close">

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

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

5<propertyname="username"value="kaktos"/>

6<propertyname="password"value="kaktos"/>

7</bean>

8

9<beanid="txManager"

10class="org.springframework.jdbc.datasource.DataSourceTransactionManager">

11<propertyname="dataSource"ref="dataSource"/>

12</bean>

13

14<beanid="matchAllWithPropReq"

15class="org.springframework.transaction.interceptor.MatchAlwaysTransactionAttributeSource">

16<propertyname="transactionAttribute"value="PROPAGATION_REQUIRED"/>

17</bean>

18

19<beanid="matchAllTxInterceptor">

20<propertyname="transactionManager"ref="txManager"/>

21<propertyname="transactionAttributeSource"ref="matchAllWithPropReq"/>

22</bean>

23

24<beanid="autoProxyCreator"

25class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">

26<propertyname="interceptorNames">

27<list>

28<idreflocal="matchAllTxInterceptor"/>

29</list>

30</property>

31<propertyname="beanNames">

32<list>

33<idreflocal="businessBean"/>

34</list>

35</property>

36</bean>

37

38<!--mybeans-->

39<beanid="businessBean">

40<propertyname="dataSource"ref="dataSource"/>

41</bean>

42</beans>

BeanNameAutoProxyCreator会在applicationcontext初始化后自动为beanNames属性中的bean建立proxy。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值