@EnableTransactionManagement
scannen alle Spring Beans für @Transactional
, um Transaktionsverwaltung bereitzustellen.Aktivieren Sie @Transactional nur für vordefinierte Pakete mit Java Config
Ist es möglich, eine Liste der Pakete zur Verfügung zu stellen, die gescannt werden?
Zum Beispiel: Ich möchte Unterstützung haben für @Transactional
in Paket a.b.c
aber ich möchte Klassen mit @Transactional
x.y.z
in Paket markiert ignorieren.
Der Grund für solche wird Anforderung ist 3-Parteien-lib. Es hat @Transactional(readonly=false)
auf fast jeder Klasse, aber es führt nur In-Memory-Operationen. Jedes Mal, wenn ich diese API anrufe, erhält die Feder die DB-Verbindung, und das muss ich wirklich vermeiden. Ich möchte diese ganze Bibliothek vom Transaktionsmanagement ausschließen. Ich kann auch keinen separaten Federkontext für diese Lib erstellen.
Können Sie nicht einfach Ausschlussfilter in Ihrem eigenen Paket hinzufügen, um die 3-Parteien-Klassen zu ignorieren? Siehe http://www.concretepage.com/spring/spring-component-scan-include-and-exclude-filter-example-using-javaconfg-and-xml-with-annotation-assignable-aspect-and-regex-filter -Typen – StanislavL
Nein, weil diese auch Frühlingsbohnen sind –
Sieht aus, als ob Sie eigene AnnotationTransactionAttributeSource benötigen, wo Sie TransactionAnnotationParser bereitstellen können, um die Klassen zu überspringen, aber ich weiß nicht, wie Sie die Quelle richtig hinzufügen. Siehe http://stackoverflow.com/questions/8316747/using-custom-annotationtransactionattributeource-with-txannotation-driven – StanislavL