Spring配置事务主要有这2种方式。
1、配置一个Spring提供的一个工厂类,然后将需要进行事务管理的bean放入工厂bean中进行委托代理。
- <bean id="companyDAOProxy" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
- <property name="transactionManager">
- <ref bean="transactionManager" />
- </property>
- <property name="target">
- <ref local="companyDAOTarget" />
- </property>
- <property name="transactionAttributes">
- <props>
- <prop key="insert*">PROPAGATION_REQUIRED</prop>
- <prop key="delete*">PROPAGATION_REQUIRED</prop>
- <prop key="find*">
- PROPAGATION_REQUIRED,readOnly
- </prop>
- </props>
- </property>
- </bean>
- <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
- <property name="dataSource">
- <ref local="dataSource" />
- </property>
- </bean>
2、采用AOP方式进行事务配置,注意在配置文件中要注明AOP schema的地址。
- <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
- <property name="dataSource">
- <ref local="dataSource" />
- </property>
- </bean>
- <aop:config>
- <aop:pointcut id="serviceMethods" expression="execution(* com.business.impl..*Service*.*(..))" />
- <aop:advisor pointcut-ref="serviceMethods" advice-ref="txAdvice" />
- </aop:config>
- <tx:advice id="txAdvice" transaction-manager="transactionManager">
- <tx:attributes>
- <tx:method name="get*" propagation="SUPPORTS" read-only="true" />
- <tx:method name="load*" propagation="SUPPORTS" read-only="true" />
- </tx:attributes>
- </tx:advice>