如何在Spring中实现自己的@Tranactional感知服务

时间:2014-08-16 12:48:48

标签: java spring

我正在编写可与多个数据库和Web服务通信的应用程序。我想使用Spring的@Transactional注释,以便任何一个失败都可以回滚它们。

我不清楚我应该怎么做,而且在搜索之后我找不到任何例子。

我有一个想法是创建一个自定义方面的bean,并使用它来拦截方法,添加我自己的自定义代码来回滚问题。但我确信必须有一种方法可以以标准化的方式做到这一点。

谢谢!

亚历

2 个答案:

答案 0 :(得分:1)

实施分布式事务的最简单方法是JTA,但我认为在您的情况下它是不可行的,因为您还需要涵盖Web服务。

但是,您可以实施最好的努力"通过为您的交易资源注册TransactionSynchronization来手动解决方案。这样您就可以将它们与@Transactional进行整合。

请参阅TransactionSynchronizationManager

答案 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>