我想了解在多個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