여러 JavaConfig 컨텍스트의 경우에 @EnableTransactionManagement
주석을 넣을 수있는 곳이 어디인지 이해하려고합니다.@EnableTransactionManagement의 범위는 무엇입니까?
다음 시나리오를 고려하십시오. 서비스 빈 집합과 함께 JPAConfig.java 및 AppConfig.java에 JPA 구성이 있습니다. 그런 다음 RootConfig.java에서 전체 응용 프로그램 구성을 작성합니다.
JPAC 저장소에 대한 검색을 활성화 할뿐만 아니라 JPAConfig.java 내에 트랜잭션 관리자를 정의합니다. 트랜잭션 동작을 나타내는 것으로서 JPAConfig에 @EnableTransactionManagement
을 입력하면 작동합니다.
그러나 일부 서비스 빈도 트랜잭션 방식을 가질 필요가 있습니다. 단일 트랜잭션 내에서 여러 리포지토리에 액세스합니다. 또한 @EnableTransactionManagement
을 AppConfig에 추가해야합니까? 이 주석의 구현을 들여다 보면 이러한 접근 방식이 일부 콩의 재정의를 유발할 것으로 생각됩니다. 실제로 그렇게하는 것은 저에게 효과적이지 않습니다.
@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 {
}
모든 조언을 감사하십시오. 나는 것 몇 가지 실험 후
이 주석은 트랜잭션 관리 작업을 전체 응용 프로그램 컨텍스트에 추가합니다. 그것이 그 범위입니다. –
그러나 전체 RootConfig에 대해 트랜잭션 주석 처리를 사용하는 것으로 보이지는 않습니다. 적어도, 그것은 나를 위해 작동하지 않습니다. –