我使用的可贖回interface.I在serviceImpl編寫多線程程序正在使用Spring的事務manager.When更新操作在DB執行。但更新後的數據不反映DB在成功執行。 但是,當我運行沒有多線程的程序時,它在DB中更新。Spring的事務管理器和多線程
這是我的配置
<tx:advice id="txAdvice" transaction-manager="txManager">
<tx:attributes>
<tx:method name="*" />
<tx:method name="find*" propagation="NOT_SUPPORTED" />
<tx:method name="get*" propagation="NOT_SUPPORTED" />
</tx:attributes>
</tx:advice>
<aop:config>
<aop:pointcut id="serviceOperation" expression="execution(* *..*ServiceImpl.*(..))" />
<aop:advisor advice-ref="txAdvice" pointcut-ref="serviceOperation" />
</aop:config>
<bean id="txManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource" />
</bean>
我可以切換到另一種方法爲交易manager.Just我想確認是否屬於這種方法支持或不適合多線程。 所以我的問題是 待辦事項Spring的事務管理器支持多線程(我的意思只是通過聲明註解或XML)爲什麼更新的數據在我的情況並沒有反映在DB ? 什麼是最好的替代方法?
是否有可能活動事務傳遞給第二個線程? –
我對此表示懷疑。交易方面如何知道第二個線程是否已完成交易?如果方法在派生線程(或可調用)完成其工作之前返回,誰最終提交事務? –
如果我會這樣做,我負責線程的正確同步。例如,在線程A中開始工作並在線程B中完成它(因此在線程之間傳遞事務)可能很有用。 –