Nous avons :
@Transactional(propagation = Propagation.REQUIRED)
public class MyClass implementes MyInterface { ...
MonInterface a une seule méthode : go()
.
Lorsque go() s'exécute, nous démarrons une nouvelle transaction qui s'engage/se retire lorsque la méthode est terminée - c'est parfait.
Maintenant disons que dans go() nous appelons une méthode privée dans MyClass qui a @Transactional(propagation = Propagation.REQUIRES_NEW
. Il semble que Spring "ignore" l'annotation REQUIRES_NEW et ne lance pas de nouvelle transaction. Je pense que c'est parce que Spring AOP opère au niveau de l'interface (MyInterface) et n'intercepte aucun appel aux méthodes de MyClass. Est-ce correct ?
Existe-t-il un moyen de lancer une nouvelle transaction au sein de la transaction go() ? La seule façon d'appeler un autre Un bean géré par Spring dont les transactions sont configurées comme REQUIRES_NEW ?
Mise à jour : Ajoutant que lorsque les clients exécutent go()
ils le font via une référence à l'interface, et non à la classe :
@Autowired
MyInterface impl;
impl.go();