Efficacité des attributs transactionnels sur les méthodes privées au printemps
Au sein de Spring, l'annotation @Transactional permet de délimiter les limites transactionnelles des méthodes. Une question courante se pose concernant l'efficacité de cette annotation lorsqu'elle est appliquée aux méthodes privées dans les beans Spring.
La réponse est simple : @Transactional n'a aucun effet sur les méthodes privées. Cela est dû au fait que le générateur de proxy utilisé par Spring ignore les méthodes privées.
Pour clarifier davantage, considérons l'exemple suivant :
public class Bean { public void doStuff() { doPrivateStuff(); } @Transactional private void doPrivateStuff() { } }
Malgré l'annotation @Transactional sur la méthode privée doPrivateStuff() , il reste inefficace et ne modifie pas le comportement transactionnel. Ce comportement est documenté dans le chapitre 10.5.6 du manuel Spring, qui indique explicitement :
"Lors de l'utilisation de proxys, vous devez appliquer l'annotation @Transactional uniquement aux méthodes avec une visibilité publique. Si vous annotez des méthodes protégées, privées ou des méthodes visibles par le package avec l'annotation @Transactional, aucune erreur n'est générée, mais la méthode annotée ne présente pas les paramètres transactionnels configurés. Envisagez l'utilisation d'AspectJ... si vous devez annoter. méthodes non publiques."
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!