Spring-servlet.xml和application-context.xml中的@Transactional

时间:2015-05-13 14:50:39

标签: java spring transactional

在我们的网络应用程序中,我们有很多背景。其中一个tx:annotation-driven已启用。结果我有可能在项目周围使用@Transactional注释,除了在spring-servlet.xml中创建和扫描的bean(@Controller,以及相关的@Service,@ Component等等)(对于一个servlet&#39) ;在Difference between applicationContext.xml and spring-servlet.xml in Spring Framework)中讨论的应用程序上下文。

我的目标是为与spring-servlet.xml相关的bean另外启用此功能。我可以尝试添加tx:annotation-driven来执行此操作,但基于此主题spring multiple transaction manager issue,此类配置被视为无效。

有人建议我可以通过哪种方式为@Transactional

中的bean启用spring-servlet.xml

1 个答案:

答案 0 :(得分:2)

我不确定我是否正确理解您的设置,但我认为您有一个带有多个servlet的spring Web应用程序;每个servlet都有自己的spring上下文,它们都有相同的父Spring语境:application-context.xml

如果这是您的设置,则应在PlatformTransactionManager中定义application-context.xml一次;因为它在父上下文中定义,它在每个servlet spring上下文中自动可用。然后,您应该能够在每个servlet spring上下文和父上下文中使用tx:annotation-driven,只要它们使用相同的事务管理器就没有任何问题。

在您要使用tx:annotation-driven的每个上下文中都不需要定义事务管理器。