Tôi đang cố gắng hiểu vị trí phù hợp để đặt @EnableTransactionManagement
chú thích trong trường hợp có nhiều ngữ cảnh JavaConfig là gì?Phạm vi của @EnableTransactionManagement là gì?
Xem xét kịch bản sau: Tôi có cấu hình JPA trong tệp JPAConfig.java và AppConfig.java với nhóm hạt dịch vụ. Sau đó, tôi soạn cấu hình ứng dụng tổng thể trong RootConfig.java.
Tôi xác định người quản lý giao dịch trong JPAConfig.java cũng như cho phép quét đối với các kho lưu trữ JPA - vì chúng hiển thị hành vi giao dịch, tôi đặt @EnableTransactionManagement
qua JPAConfig và nó hoạt động.
Tuy nhiên, một số hạt dịch vụ cũng cần phải có phương thức giao dịch, ví dụ: truy cập một số kho lưu trữ trong một giao dịch duy nhất. Tôi cũng có nên đặt @EnableTransactionManagement
trên AppConfig không? Nhìn vào việc thực hiện chú thích này dường như với tôi rằng cách tiếp cận như vậy sẽ gây ra định nghĩa lại một số hạt cà phê. Và thực sự làm như vậy dường như không hiệu quả với tôi.
@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 {
}
Đánh giá cao mọi lời khuyên.
Chú thích đó thêm công cụ quản lý giao dịch vào toàn bộ ngữ cảnh ứng dụng. Đó là phạm vi của nó. –
Nhưng nó dường như không cho phép xử lý chú thích giao dịch cho toàn bộ RootConfig. Ít nhất, nó không làm việc cho tôi. –