Mehrere Transaktions-Manager, die mit @Transactional-annotation
- Wir haben Basis-generic-manager, die
vererbt sich an alle Führungskräfte. Base
manager versehen mit
@Transactional-Annotationen. - Gibt es 2 Gruppen von Transaktions -
Dienstleistungen:x.y.service1.*
- verwaltet werden müssen, durchtransactionManager1
x.y.service2.*
- verwaltet werden müssen, durchtransactionManager2
Wie können Transaktionen konfiguriert werden, ohne nessesity zum überschreiben ALLER Transaktions-Methoden, und geben Sie den Transaktions-manager?
@Transactional(readOnly = true)
public abstract class GenericManagerImpl<D extends IGenericDao, T extends BaseObject, PK extends Serializable>
implements IGenericManager<T, PK> {
protected D dao;
@Autowired
public void setDao(D dao) {
this.dao = dao;
}
@Transactional(readOnly = false)
public void save(T object) {
dao.save(object);
}
@Transactional(readOnly = false)
public void remove(T object) {
dao.remove(object);
}
}
@Service
class UserManagerImpl
extends GenericManagerImpl<IUserDao, User, Long>
implements IUserManager {
//Everything is OK. User is managed by txManager1
}
@Service
class BillingManagerImpl
extends GenericManagerImpl<IBillingDao, Billing, Long>
implements IBillingManager {
@Override
@Transactional(readOnly = false, value="txManager2") //<--have to override method only to specify txManager
public void save(final Billing billing ) {
super.save(billing);
}
@Override
@Transactional(readOnly = false, value="txManager2") //<--have to override method only to specify txManager
public void remove(final Billing billing ) {
super.remove(billing);
}
}
Meisten wahrscheinlich muss ich kombinieren aop mit @Transactional-annotation.
Eigentlich ist das, was ich will, ist:
1) konfigurieren können, die Transaktionen (read-only-flag, Predigten, isolation usw.), die mit @Transactional-annotation.
2) definieren Strategie zu wählen transaction manager außerhalb meiner Klassen (mit AOP, zum Beispiel)
x.y.service1.* -> verwenden txManager1
x.y.service2.* -> verwenden txManager2
Ist es möglich?
InformationsquelleAutor Seyran | 2010-07-26
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gibt es die Möglichkeit, erstellen Sie Ihre eigenen Anmerkungen als shortcuts für
@Transactional(value="tx1")
. (Diese können verwendet werden, auf Klassen-oder methodenebene)aus der Referenz-Dokumentation:
Beispielsweise die Definition die folgenden Anmerkungen
erlaubt uns zu schreiben, das Beispiel aus dem vorherigen Abschnitt als
nicht von mir, leider. Ich habe nur nachgeschaut 🙂
Ja, ich weiß, dass ich mit meta-annotation. Aber das ist nur eine Vereinfachung der Konfiguration. Ich muss noch Methode überschreiben und mit Anmerkungen versehen Sie mit Annotationen, wie @OrderTx
Und wie fügen Sie
readOnly = true
wenn necesseray?durch die
@AliasFor
Mechanismus eingeführt, im Frühjahr 4.2InformationsquelleAutor Sean Patrick Floyd
Ich denke, man kann definieren
@Transactional
auf Klassen-EbeneInformationsquelleAutor Bozho