spring 事务配置 的一种方法

本文介绍了在 Spring 框架中进行 JDBC 数据源配置的方法,包括使用 DriverManagerDataSource 和 Proxool 进行直接配置,利用 Commons DBCP 实现连接池,以及 JNDI 数据源在 J2EE 环境下的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. <?xmlversion="1.0"encoding="UTF-8"?>
  2. <!DOCTYPEbeansPUBLIC"-//SPRING//DTDBEAN2.0//EN""http://www.springframework.org/dtd/spring-beans-2.0.dtd">
  3. <!--
  4. -ApplicationcontextdefinitionforPetCliniconJDBC.
  5. -->
  6. <beans>
  7. <!--=========================RESOURCEDEFINITIONS=========================-->
  8. <!--Configurerthatreplaces${...}placeholderswithvaluesfromapropertiesfile-->
  9. <!--(inthiscase,JDBC-relatedsettingsforthedataSourcedefinitionbelow)-->
  10. <!--
  11. <beanid="propertyConfigurer"class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
  12. <propertyname="location"value="/WEB-INF/jdbc.properties"/>
  13. </bean>
  14. -->
  15. <!--
  16. SimplelocalDataSourcethatworksinanyenvironment.
  17. ThisusestheJDBCDriverManagertoobtainconnections,anddoesNOTperformconnection
  18. pooling.Connectionpoolingisessentialtoallreal-worldapplications.
  19. Thisdefinitionisgoodforgettingstarted,asitintroducesnodependenciesbeyond
  20. theJDK,butDriverManagerDataSourceisnotintendedforproductionusage.
  21. -->
  22. <!--
  23. <beanid="dataSource"class="org.springframework.jdbc.datasource.DriverManagerDataSource">
  24. <propertyname="driverClassName"value="${jdbc.driverClassName}"/>
  25. <propertyname="url"value="${jdbc.url}"/>
  26. <propertyname="username"value="${jdbc.username}"/>
  27. <propertyname="password"value="${jdbc.password}"/>
  28. </bean>
  29. -->
  30. <!--在spring中直接配置jdbc链接
  31. <beanid="dataSource"
  32. class="org.springframework.jdbc.datasource.DriverManagerDataSource">
  33. <propertyname="driverClassName"
  34. value="net.sourceforge.jtds.jdbc.Driver"/>
  35. <propertyname="url"
  36. value="jdbc:jtds:sqlserver://localhost:1433/wmjqxgl;SelectMethod=cursor;charset=GBK;tds=8.0;lastupdatecount=true"/>
  37. <propertyname="username"value="sa"/>
  38. <propertyname="password"value="sa"/>
  39. </bean>-->
  40. <!--通过proxool来配置数据源-->
  41. <beanid="dataSource"
  42. class="org.springframework.jdbc.datasource.DriverManagerDataSource">
  43. <propertyname="driverClassName"
  44. value="org.logicalcobwebs.proxool.ProxoolDriver"/>
  45. <propertyname="url"
  46. value="proxool.qxgldb"/>
  47. </bean>
  48. <!--
  49. AlternativelocalDataSourcethatworksinanyenvironment,andoffersmuchbetterperformance.
  50. UsesApacheCommonsDBCPforconnectionpooling.SeeCommonsDBCPdocumentation
  51. fortherequiredJARfiles.SeethePetStoresampleapplicationalsoshippedwith
  52. Spring,foranexampleofCommonsDBCPusageandthenecessarybuildscript.
  53. AlternativelyyoucanuseanotherconnectionpoolsuchasC3P0,similarlyconfigured
  54. usingSpring.
  55. AstandaloneconnectionpoolsuchasCommonsDBCPisagoodchoiceforuseoutsidean
  56. applicationserverenvironment,includingwebapplicationsrunninginawebcontainerwithout
  57. JTA,orintegrationtestingusingtheorg.springframework.testpackage.
  58. -->
  59. <!--
  60. <beanid="dataSource"class="org.apache.commons.dbcp.BasicDataSource"destroy-method="close">
  61. <propertyname="driverClassName"value="${jdbc.driverClassName}"/>
  62. <propertyname="url"value="${jdbc.url}"/>
  63. <propertyname="username"value="${jdbc.username}"/>
  64. <propertyname="password"value="${jdbc.password}"/>
  65. </bean>
  66. -->
  67. <!--JNDIDataSourceforJ2EEenvironments-->
  68. <!--
  69. <beanid="dataSource"class="org.springframework.jndi.JndiObjectFactoryBean">
  70. <propertyname="jndiName"value="java:comp/env/jdbc/petclinic"/>
  71. </bean>
  72. -->
  73. <!--TransactionmanagerforasingleJDBCDataSource(alternativetoJTA)-->
  74. <beanid="transactionManager"
  75. class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
  76. <propertyname="dataSource"ref="dataSource"/>
  77. </bean>
  78. <!--TransactionmanagerthatdelegatestoJTA(foratransactionalJNDIDataSource)-->
  79. <!--
  80. <beanid="transactionManager"class="org.springframework.transaction.jta.JtaTransactionManager"/>
  81. -->
  82. <beanid="baseTransactionProxy"abstract="true"
  83. class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
  84. <propertyname="transactionManager">
  85. <refbean="transactionManager"/>
  86. </property>
  87. <propertyname="transactionAttributes">
  88. <props>
  89. <propkey="create*">
  90. PROPAGATION_REQUIRED,-Exception
  91. </prop>
  92. <propkey="update*">
  93. PROPAGATION_REQUIRED,-Exception
  94. </prop>
  95. <propkey="delete*">
  96. PROPAGATION_REQUIRED,-Exception
  97. </prop>
  98. <propkey="get*">PROPAGATION_REQUIRED,readOnly</prop>
  99. <propkey="retrieve*">
  100. PROPAGATION_REQUIRED,readOnly
  101. </prop>
  102. <propkey="*">PROPAGATION_REQUIRED,-Exception</prop>
  103. </props>
  104. </property>
  105. </bean>
  106. <!--
  107. 通过BeanNameAutoProxyCreator来实现spring的事务控制-->
  108. <bean
  109. class="org.springframework.transaction.interceptor.TransactionAttributeSourceAdvisor">
  110. <propertyname="transactionInterceptor"
  111. ref="transactionInterceptor"/>
  112. </bean>
  113. <beanid="transactionInterceptor"
  114. class="org.springframework.transaction.interceptor.TransactionInterceptor">
  115. <propertyname="transactionManager">
  116. <refbean="transactionManager"/>
  117. </property>
  118. <propertyname="transactionAttributes">
  119. <props>
  120. <propkey="create*">
  121. PROPAGATION_REQUIRED,-Exception
  122. </prop>
  123. <propkey="update*">
  124. PROPAGATION_REQUIRED,-Exception
  125. </prop>
  126. <propkey="delete*">
  127. PROPAGATION_REQUIRED,-Exception
  128. </prop>
  129. <propkey="get*">PROPAGATION_REQUIRED,readOnly</prop>
  130. <propkey="retrieve*">
  131. PROPAGATION_REQUIRED,readOnly
  132. </prop>
  133. <propkey="*">PROPAGATION_REQUIRED,-Exception</prop>
  134. </props>
  135. </property>
  136. </bean>
  137. <bean
  138. class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
  139. <propertyname="beanNames">
  140. <value>*ServiceDao</value>
  141. </property>
  142. <propertyname="interceptorNames">
  143. <list>
  144. <value>transactionInterceptor</value>
  145. </list>
  146. </property>
  147. </bean>
  148. <!--=========================BUSINESSOBJECTDEFINITIONS=========================-->
  149. </beans>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值