我正在编写可与多个数据库和Web服务通信的应用程序。我想使用Spring的@Transactional注释,以便任何一个失败都可以回滚它们。
我不清楚我应该怎么做,而且在搜索之后我找不到任何例子。
我有一个想法是创建一个自定义方面的bean,并使用它来拦截方法,添加我自己的自定义代码来回滚问题。但我确信必须有一种方法可以以标准化的方式做到这一点。
谢谢!
亚历
答案 0 :(得分:1)
实施分布式事务的最简单方法是JTA,但我认为在您的情况下它是不可行的,因为您还需要涵盖Web服务。
但是,您可以实施最好的努力"通过为您的交易资源注册TransactionSynchronization
来手动解决方案。这样您就可以将它们与@Transactional
进行整合。
答案 1 :(得分:0)
你应该在spring config xml中为每个数据源声明下面的内容,以便能够在你的应用程序中使用@Transactional:
<tx:annotation-driven transaction-manager="txManager"/>
<bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"/>
</bean>