以前配置spring事务时都是使用aspectj(切面点表达式,aop:config)来配置事务,公司的项目里面使用的是TransactionProxyFactoryBean
这个类来配置事务,用这个配置事务也还是很方便的。
<bean id="transactionManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory">
<ref bean="sessionFactory" />
</property>
</bean>
<!--事务管理的基类-->
<bean id="baseTxProxy" lazy-init="true"
class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"
abstract="true">
<property name="transactionManager">
<ref bean="transactionManager" />
</property>
<property name="transactionAttributes">
<props>
<prop key="*">PROPAGATION_REQUIRED</prop>
<prop key="get*">PROPAGATION_REQUIRED</prop>
<prop key="find*">PROPAGATION_REQUIRED</prop>
<prop key="save*">PROPAGATION_REQUIRED</prop>
<prop key="delete*">PROPAGATION_REQUIRED</prop>
</props>
</property>
</bean>
<bean id="userDao" class="a.b.c.UserDaoImpl">
<property name="sessionFactory">
<ref bean="sessionFactory"/>
</property>
</bean>
<bean id="userService" parent="baseTxProxy">
<property name="target">
<bean class="a.b.c.impl.userServiceImpl"
autowire="byName"/>
</property>
</bean>
只需要将bean的parent指定为前面配置的TransactionProxyFactoryBean
bean就可以了。