[转]spring声明式事务配置方法(三):TransactionProxyFactoryBean继承方式
Xml代码
1. <?xml version="1.0" encoding="UTF-8"?>
2.
3. <beans xmlns="http://www.springframework.org/schema/beans"
4. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
5. xmlns:aop="http://www.springframework.org/schema/aop"
6. xmlns:tx="http://www.springframework.org/schema/tx"
7. xsi:schemaLocation="
8. http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
9. http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
10. http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">
11. <bean id="testAction" class="test.action.Stuts2ActionTest">
12. <property name="service" ref="templatesService"></property>
13. </bean>
14.
15. <bean id="templatesService"
16. class="test.service.impl.TaoTemplatesServiceImpl">
17. <property name="dao" ref="templatesDAO" />
18. </bean>
19.
20. <!-- 定义DAO bean的事务代理-->
21. <bean id="templatesDAO" parent="txBase">
22. <property name="target">
23. <!-- 采用嵌套bean配置目标bean-->
24. <bean class="test.dao.impl.TaoTemplatesDAOImpl">
25. <!-- 为DAO bean注入SessionFactory引用-->
26. <property name="sessionFactory">
27. <ref local="sessionFactory" />
28. </property>
29. </bean>
30. </property>
31. </bean>
32.
33. <!-- 配置事务模板,模板bean被设置成abstract bean,保证不会被初始化-->
34. <bean id="txBase"
35. class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"
36. lazy-init="true" abstract="true">
37. <!-- 为事务模板注入事务管理器-->
38. <property name="transactionManager">
39. <ref bean="transactionManager" />
40. </property>
41. <!-- 设置事务属性-->
42. <property name="transactionAttributes">
43. <props>
44. <!-- 所有以add开头的方法,采用required的事务策略,并且只读-->
45. <prop key="add*">PROPAGATION_REQUIRED</prop>
46. <!-- 所有以mod开头的方法,采用required的事务策略,并且只读-->
47. <prop key="mod*">PROPAGATION_REQUIRED</prop>
48. <!-- 所有以del开头的方法,采用required的事务策略,并且只读-->
49. <prop key="del*">PROPAGATION_REQUIRED</prop>
50. <!-- 其他方法,采用required的事务策略 -->
51. <prop key="*">readOnly</prop>
52. </props>
53. </property>
54. </bean>
55.
56. <!--定义数据源-->
57. <bean id="dataSource"
58. class="org.apache.commons.dbcp.BasicDataSource">
59. <!-- 定义数据库驱动-->
60. <property name="driverClassName">
61. <value>oracle.jdbc.driver.OracleDriver</value>
62. </property>
63. <!-- 定义数据库url-->
64. <property name="url">
65. <value>jdbc:oracle:thin:@192.168.1.96:1521:yxdb</value>
66. </property>
67. <!-- 定义数据库用户名-->
68. <property name="username">
69. <value>yxuser</value>
70. </property>
71. <!-- 定义数据库密码-->
72. <property name="password">
73. <value>yxuser</value>
74. </property>
75. </bean>
76.
77. <!--定义一个hibernate的SessionFactory-->
78. <bean id="sessionFactory"
79. class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
80. <!-- 定义SessionFactory必须注入DataSource-->
81. <property name="dataSource">
82. <ref local="dataSource" />
83. </property>
84. <property name="mappingResources">
85. <list>
86. <!--以下用来列出所有的PO映射文件-->
87. <value>test/mapping/Tao_Templates.hbm.xml</value>
88. </list>
89. </property>
90. <property name="hibernateProperties">
91. <props>
92. <prop key="hibernate.dialect">
93. org.hibernate.dialect.Oracle10gDialect
94. </prop>
95. <prop key="hibernate.show_sql">true</prop>
96. <!--此处用来定义hibernate的SessionFactory的属性:
97. 不同数据库连接,启动时选择create,update,create-drop -->
98. <prop key="hibernate.hbm2ddl.auto">update</prop>
99. </props>
100. </property>
101. </bean>
102.
103. <!-- 定义事务管理器,使用适用于Hibernte的事务管理器-->
104. <bean id="transactionManager"
105. class="org.springframework.orm.hibernate3.HibernateTransactionManager">
106. <!-- HibernateTransactionManager bean需要依赖注入一个SessionFactory bean的引用-->
107. <property name="sessionFactory">
108. <ref local="sessionFactory" />
109. </property>
110. </bean>
111. </beans>
1. <?xml version="1.0" encoding="UTF-8"?>
2.
3. <beans xmlns="http://www.springframework.org/schema/beans"
4. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
5. xmlns:aop="http://www.springframework.org/schema/aop"
6. xmlns:tx="http://www.springframework.org/schema/tx"
7. xsi:schemaLocation="
8. http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
9. http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
10. http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">
11. <bean id="testAction" class="test.action.Stuts2ActionTest">
12. <property name="service" ref="templatesService"></property>
13. </bean>
14.
15. <bean id="templatesService"
16. class="test.service.impl.TaoTemplatesServiceImpl">
17. <property name="dao" ref="templatesDAO" />
18. </bean>
19.
20. <!-- 定义DAO bean的事务代理-->
21. <bean id="templatesDAO" parent="txBase">
22. <property name="target">
23. <!-- 采用嵌套bean配置目标bean-->
24. <bean class="test.dao.impl.TaoTemplatesDAOImpl">
25. <!-- 为DAO bean注入SessionFactory引用-->
26. <property name="sessionFactory">
27. <ref local="sessionFactory" />
28. </property>
29. </bean>
30. </property>
31. </bean>
32.
33. <!-- 配置事务模板,模板bean被设置成abstract bean,保证不会被初始化-->
34. <bean id="txBase"
35. class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"
36. lazy-init="true" abstract="true">
37. <!-- 为事务模板注入事务管理器-->
38. <property name="transactionManager">
39. <ref bean="transactionManager" />
40. </property>
41. <!-- 设置事务属性-->
42. <property name="transactionAttributes">
43. <props>
44. <!-- 所有以add开头的方法,采用required的事务策略,并且只读-->
45. <prop key="add*">PROPAGATION_REQUIRED</prop>
46. <!-- 所有以mod开头的方法,采用required的事务策略,并且只读-->
47. <prop key="mod*">PROPAGATION_REQUIRED</prop>
48. <!-- 所有以del开头的方法,采用required的事务策略,并且只读-->
49. <prop key="del*">PROPAGATION_REQUIRED</prop>
50. <!-- 其他方法,采用required的事务策略 -->
51. <prop key="*">readOnly</prop>
52. </props>
53. </property>
54. </bean>
55.
56. <!--定义数据源-->
57. <bean id="dataSource"
58. class="org.apache.commons.dbcp.BasicDataSource">
59. <!-- 定义数据库驱动-->
60. <property name="driverClassName">
61. <value>oracle.jdbc.driver.OracleDriver</value>
62. </property>
63. <!-- 定义数据库url-->
64. <property name="url">
65. <value>jdbc:oracle:thin:@192.168.1.96:1521:yxdb</value>
66. </property>
67. <!-- 定义数据库用户名-->
68. <property name="username">
69. <value>yxuser</value>
70. </property>
71. <!-- 定义数据库密码-->
72. <property name="password">
73. <value>yxuser</value>
74. </property>
75. </bean>
76.
77. <!--定义一个hibernate的SessionFactory-->
78. <bean id="sessionFactory"
79. class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
80. <!-- 定义SessionFactory必须注入DataSource-->
81. <property name="dataSource">
82. <ref local="dataSource" />
83. </property>
84. <property name="mappingResources">
85. <list>
86. <!--以下用来列出所有的PO映射文件-->
87. <value>test/mapping/Tao_Templates.hbm.xml</value>
88. </list>
89. </property>
90. <property name="hibernateProperties">
91. <props>
92. <prop key="hibernate.dialect">
93. org.hibernate.dialect.Oracle10gDialect
94. </prop>
95. <prop key="hibernate.show_sql">true</prop>
96. <!--此处用来定义hibernate的SessionFactory的属性:
97. 不同数据库连接,启动时选择create,update,create-drop -->
98. <prop key="hibernate.hbm2ddl.auto">update</prop>
99. </props>
100. </property>
101. </bean>
102.
103. <!-- 定义事务管理器,使用适用于Hibernte的事务管理器-->
104. <bean id="transactionManager"
105. class="org.springframework.orm.hibernate3.HibernateTransactionManager">
106. <!-- HibernateTransactionManager bean需要依赖注入一个SessionFactory bean的引用-->
107. <property name="sessionFactory">
108. <ref local="sessionFactory" />
109. </property>
110. </bean>
111. </beans>