Chúng tôi có người quản lý chung chung mà tất cả các nhà quản lý đều thừa kế. Trình quản lý cơ sở được chú thích với chú thích @Transactional.Nhiều người quản lý giao dịch có chú thích @Transactional
Có 2 nhóm dịch vụ giao dịch:
x.y.service1.*
- đã được quản lý bởitransactionManager1
x.y.service2.*
- đã được quản lý bởitransactionManager2
thế nào giao dịch có thể được định cấu hình mà không có sự thiếu để ghi đè TẤT CẢ các phương thức giao dịch và chỉ định trình quản lý giao dịch?
@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);
}
}
lẽ Hầu hết tôi cần phải kết hợp với aop chú thích @Transactional.
Thực ra, điều tôi muốn là:
1) Để có thể định cấu hình giao dịch (chỉ đọc cờ, chuyển hướng, cách ly, v.v.) bằng chú thích @Transactional.
2) xác định chiến lược để lựa chọn quản lý giao dịch bên ngoài lớp học của tôi (sử dụng AOP, ví dụ)
xyservice1 * -.> Sử dụng txManager1
xyservice2 * -.> Sử dụng txManager2
Có thể ?
Tôi đã đọc chỉ adn KHÔNG chỉ đọc các phương thức trong trình quản lý cơ sở. Tôi có 2 lựa chọn ở đây: 1) có trình độ lớp chú thích @Transactional (readonly = true) và mức độ phương pháp chú thích @Transactional (readonly = false) cho mỗi KHÔNG chỉ đọc phương pháp 2) có trình độ lớp chú thích @Transactional (readOnly = false) và chú thích mức phương thức @Transactional (readOnly = true) cho mọi phương thức chỉ đọc Trong mọi trường hợp, tôi sẽ cần ghi đè chú thích @transactional cho các dịch vụ phải được quản lý bởi txManager2 – Seyran