我們有 被所有管理者繼承的基礎通用管理。基地 經理用 @Transactional註釋註釋。多個事務經理@Transactional註解
有2組的事務 服務:
x.y.service1.*
- 必須由transactionManager1
x.y.service2.*
管理 - 必須由transactionManager2
如何管理交易可以配置沒有nessesity覆蓋所有事務性方法並指定事務管理器?
@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);
}
}
最有可能我需要AOP與@Transactional註釋結合起來。
實際上,我想要的是:
1)能夠使用@Transactional註釋配置事務(只讀標誌,傳播,隔離等)。
2)確定戰略選擇我的類(使用AOP之外的事務管理器,例如)
xyservice1 * - >使用txManager1
xyservice2 * - >使用txManager2
是否有可能?
我只讀和不只讀基本管理器中的方法。 我有兩個選擇在這裏: 1)具有一流水平的註解@Transactional(唯讀= TRUE)和方法級註解@Transactional(唯讀= FALSE)爲每一個不只讀方式 2)具有一流水平的註解@Transactional( readOnly = false)和方法級別註釋@Transactional(readOnly = true)爲每個只讀方法 在任何情況下,我將需要覆蓋方法級別@transactional註釋的服務必須由txManager2 – Seyran 2010-07-26 10:35:38