Quelle est la portée de @EnableTransactionManagement?

J'essaie de comprendre où est le bon endroit pour mettre @EnableTransactionManagement annotation dans le cas de plusieurs JavaConfig contextes?

Envisager scénario suivant: j'ai JPA config JPAConfig.java et AppConfig.java avec jeu de service de haricots. Alors je compose à l'ensemble de l'application config RootConfig.java.

Je définir le gestionnaire de transactions au sein de JPAConfig.java ainsi que de permettre la numérisation de JPA dépôts - comme ceux d'exposer transactionnelle comportement, j'ai mis @EnableTransactionManagement sur JPAConfig et il fonctionne.

Cependant, certains de service haricots doivent aussi avoir les méthodes transactionnelles par exemple en accédant à plusieurs référentiels au sein d'une même transaction. Dois-je aussi mettre @EnableTransactionManagement sur AppConfig ainsi? La recherche dans la mise en œuvre de cette annotation est me semble qu'une telle approche serait la cause de la redéfinition de certaines fèves. Et effectivement ne semble pas fonctionner pour moi.

@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 {
}

Apprécier des conseils.

  • Cette annotation ajoute la gestion des transactions des trucs à l'ensemble du contexte de l'application. C'est son champ d'application.
  • Mais il ne semble pas permettre de transaction annotations de traitement pour l'ensemble des RootConfig. Au moins, il ne fonctionne pas pour moi.