Sto cercando di capire dove è il posto giusto per inserire l'annotazione @EnableTransactionManagement
in caso di più contesti JavaConfig?Qual è lo scopo di @EnableTransactionManagement?
Considerare il seguente scenario: Ho JPA config in JPAConfig.java e AppConfig.java con set di bean di servizio. Quindi compongo la configurazione generale dell'applicazione in RootConfig.java.
Definisco il gestore delle transazioni all'interno di JPAConfig.java e abilito la scansione per i repository JPA - come quelli che espongono il comportamento delle transazioni, ho inserito @EnableTransactionManagement
su JPAConfig e funziona.
Tuttavia, alcuni dei bean di servizio devono anche disporre di metodi transazionali, ad es. accesso a diversi repository all'interno di una singola transazione. Devo inserire anche @EnableTransactionManagement
su AppConfig? Guardando all'implementazione di questa annotazione mi sembra che un simile approccio possa causare la ridefinizione di alcuni bean. E in realtà farlo non sembra funzionare per me.
@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 {
}
Apprezzare qualsiasi consiglio.
Questa annotazione aggiunge elementi di gestione delle transazioni all'intero contesto dell'applicazione. Questo è il suo scopo. –
Ma non sembra abilitare l'elaborazione delle annotazioni di transazione per RootConfig in generale. Almeno, non funziona per me. –