Spring Hibernate,如何在事务提交或事务回滚后调用某些方法
事务成功或回滚后,我需要调用一些方法。我正在使用
<bean name="openSessionInViewInterceptor" class="org.springframework.orm.hibernate3.support.OpenSessionInViewInterceptor"> <property name="sessionFactory">
<ref local="mysessionFactory"/>
</property>
</bean>
<bean id="txManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory">
<ref local="mysessionFactory"/>
</property>
</bean>
<tx:annotation-driven transaction-manager="txManager" proxy-target-class="true"/>
该应用程序使用一些外部Web服务,这些内部Web服务在回滚内部事务时需要“清除”。有没有办法在不使用声明式事务管理的情况下完成此操作。
回答:
在Hibernate中,你可以扩展
EmptyInterceptor
和覆盖afterTransactionCompletion()
方法并将其注册在SessionFactoryBean
或中HibernateTransactionManager
。在Spring中,你可以使用扩展
TransactionSynchronizationAdapter
,覆盖afterCompletion()
和注册TransactionSynchronizationManager#registerSynchronization()
。
编辑
使用Spring Aop向所有带注释的方法添加同步的示例 @Transactional
@Aspectclass TransactionAspect extends TransactionSynchronizationAdapter {
@Before("@annotation(org.springframework.transaction.annotation.Transactional)")
public void registerTransactionSyncrhonization() {
TransactionSynchronizationManager.registerSynchronization(this);
}
@Override
public void afterCompletion(int status) {
// code
}
}
以上是 Spring Hibernate,如何在事务提交或事务回滚后调用某些方法 的全部内容, 来源链接: utcz.com/qa/417364.html