हमारे पास बेस जेनेरिक मैनेजर है जो सभी प्रबंधकों द्वारा विरासत में मिला है। बेस प्रबंधक @ ट्रांस्सेक्शन एनोटेशन के साथ एनोटेट किया गया है।@ ट्रान्सएक्शनल एनोटेशन
व्यवहार सेवाओं के 2 समूहों के होते हैं: -
transactionManager1
x.y.service2.*
द्वारा प्रबंधित किया जा करने के लिए है -x.y.service1.*
द्वाराtransactionManager2
कैसे प्रबंधित करने के लिए है बिना लेनदेन के लेनदेन कॉन्फ़िगर किया जा सकता है सभी लेनदेन संबंधी तरीकों को ओवरराइड करने और लेनदेन प्रबंधक निर्दिष्ट करने के लिए?
@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);
}
}
अधिकांश शायद मैं @Transactional टिप्पणी के साथ aop गठबंधन करने के लिए की जरूरत है।
दरअसल, मैं क्या चाहता हूं:
1) लेनदेन को कॉन्फ़िगर करने में सक्षम होने के लिए (केवल ध्वज, प्रचार, अलगाव आदि पढ़ें) @ ट्रांस्सेक्शन एनोटेशन के साथ।
2) रणनीति को परिभाषित मेरी कक्षाओं (AOP का उपयोग कर के बाहर लेनदेन प्रबंधक चुनने के लिए, उदाहरण के)
xyservice1 के लिए * -।> का उपयोग txManager1
xyservice2 * -।> का उपयोग txManager2
क्या यह संभव है ?
मैंने केवल पढ़ा है केवल आधार प्रबंधक में केवल विधियों को नहीं पढ़ा है। मैं 2 विकल्प यहाँ हैं: 1) है श्रेणी स्तर एनोटेशन @Transactional (केवल पढ़ने = सच) और हर नहीं पढ़ के लिए विधि स्तर एनोटेशन @Transactional (केवल पढ़ने = false) केवल तरीकों 2) (कक्षा के स्तर का एनोटेशन @Transactional है पढ़ने के लिए केवल = झूठी) और विधि स्तर एनोटेशन @ ट्रान्सएक्शनल (readOnly = true) प्रत्येक पढ़ने के लिए केवल किसी भी मामले में मुझे उन सेवाओं के लिए विधि स्तर @transactional एनोटेशन को ओवरराइड करने की आवश्यकता होगी जिन्हें txManager2 – Seyran