先贴2个小例子!
applicationContext-a.xml
applicationContext-b.xml
说明:
第一种声明事务实现方式:
<property name="transactionManager">
<ref bean="transactionManager"/>
</property>
<property name="transactionAttributeSource">
<ref bean="reqNamingTransactionAttribute"/>
</property>
需要代理的事务中,通过这两个属性进行了事务管理。
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory">
<ref bean="sessionFactory"/>
</property>
</bean>
<bean id="reqNamingTransactionAttribute"
class="org.springframework.transaction.interceptor.NameMatchTransactionAttributeSource">
<property name="properties">
<props>
<prop key="*">
PROPAGATION_REQUIRED,ISOLATION_DEFAULT,-Exception
</prop>
</props>
</property>
</bean>
有这2个Bean,可以进行事务上的管理控制了!
第二种声明事务实现方式:
<bean id="requestUCC" parent="baseTransactionProxy">
<property name="target" ref="TargetRequestUCC" />
</bean>
<bean id="TargetRequestUCC"
class="cn.ccb.faengine.sysmanage.request.ucc.impl.RequestUCCImpl">
<property name="hibernateDAO">
<ref bean="commonHibernateDAO" />
</property>
</bean>
这种方式继承了 父类 parent="baseTransactionProxy" 这个Bean的事务管理方式
<bean id="baseTransactionProxy"
class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean" abstract="true">
<property name="transactionManager" ref="transactionManager"/>
<property name="transactionAttributeSource">
<ref bean="reqNamingTransactionAttribute" />
</property>
</bean>