【问题标题】:@Transactional amongst spring-servlet.xml and application-context.xml@Transactional 在 spring-servlet.xml 和 application-context.xml 之间
【发布时间】:2015-05-13 14:50:39
【问题描述】:

在我们的 Web 应用程序中,我们有许多上下文。其中一个tx:annotation-driven 被启用。因此,我可以在项目周围使用@Transactional 注释,除了在spring-servlet.xml 中创建和扫描的bean(@Controller,以及相关的@Service、@Component 等)(对于一个 servlet 的应用程序上下文,如在Difference between applicationContext.xml and spring-servlet.xml in Spring Framework)。

我的目标是另外为与 spring-servlet.xml 相关的 bean 启用此功能。我可以尝试通过添加tx:annotation-driven 来做到这一点,但基于此主题spring multiple transaction manager issue 这样的配置被认为是无效的。

有人可以建议我可以通过哪种方式为来自spring-servlet.xml 的bean 启用@Transactional

【问题讨论】:

  • 为什么不用@Transactional 注释你想要事务的类?
  • @WeareBorg OP 正在这样做。问题是如何在同一个应用程序中为多个上下文启用该注释。

标签: java spring transactional


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 2015-09-16
    • 2013-10-31
    • 2015-11-03
    • 2014-06-30
    • 2014-03-10
    • 2010-09-30
    • 2012-07-18
    • 2011-03-30
    • 2013-08-09
    相关资源
    最近更新 更多