我想了解在多个JavaConfig上下文的情况下,在哪里放置@EnableTransactionManagement
注释的正确位置?@EnableTransactionManagement的范围是什么?
请考虑以下情况:我在JPAConfig.java中配置了JPA配置,在服务bean中配置了AppConfig.java。然后我在RootConfig.java中编写整体应用程序配置。
我在JPAConfig.java中定义了事务管理器,并且启用了对JPA存储库的扫描 - 由于那些暴露了事务性行为,我把@EnableTransactionManagement
放在JPAConfig上并且它可以工作。
然而,一些服务bean还需要具有事务处理方法,例如,访问单个事务中的多个存储库。我是否也应该将@EnableTransactionManagement
放在AppConfig上?研究这个注释的实现在我看来,这种方法会导致一些bean的重新定义。实际上这样做对我来说似乎不起作用。
@Configuration
@EnableTransactionManagement
@EnableJpaRepositories("com.mypackage.repositories")
public class JPAConfig {
// ... here are EntityManager and PlatformTransactionManager beans
}
@Configuration
@ComponentScan("com.mypackage.services")
// @EnableTransactionManagement // - ???
public class AppConfig {
}
@Configuration
@Import({AppConfig.class, JPAConfig.class})
public class RootConfig {
}
欣赏任何建议。
该注解将事务管理内容添加到整个应用程序上下文中。这是它的范围。 – 2014-09-23 08:53:39
但它似乎并未启用整个RootConfig的事务注释处理。至少,它不适合我。 – 2014-09-23 09:46:49