Tôi có một lớp trừu tượng AbstractService
trong đó có một tham chiếu đến AbstractDAO
Autowire phụ thuộc vào lớp con
class AbstractService{
protected AbstractDAO abstractDAO;
}
AbstractService
sẽ được mở rộng bởi lớp dịch vụ thực tế như ServiceClassA
, ServiceClassB
vv, và AbstractDAO
sẽ được kéo dài thêm DaoClassA
, DaoClassB
v.v.
Tùy thuộc vào loại nào đang mở rộng AbstractService
, abstractDAO
phải là một phiên bản DaoClassA
, DaoClassB
vv
tôi có thể đạt được điều này bằng cách setter abstractDAO trong lớp kéo dài như
class ServiceClassA{
@Autowired
@Qualifier("daoClassA")
public void setAbstractDAO(AbstractDAO abstractDAO) {
super.abstractDAO = abstractDAO;
}
}
Có cách nào để có setter setAbstractDAO
trong AbstractService
lớp tự và abstractDAO
bị Autowired phụ thuộc vào subclass có thể wth SPEL + Qualifier etc
Chúng tôi không muốn sử dụng bất kỳ cấu hình XML nào cho số này
Có bất cứ lý do bạn không thể đưa ví dụ '@Autowired DaoClassA dao' vào' ServiceClassA'? Tại sao trường cần phải được khai báo trong 'AbstractService'? – skaffman
Câu hỏi hay. Tôi đã luôn luôn làm một cái gì đó tương tự như cách tiếp cận bạn mô tả (hơi khác nhau, nhưng ý tưởng cơ bản giống nhau) và tôi đã luôn luôn muốn một cái gì đó tự động hơn một chút. Mong muốn xem liệu có ai có cách tiếp cận tốt hay không. –
@skaffman Trong trường hợp tôi đã có, tôi muốn AbstractService có quyền truy cập vào AbstractDao để tôi có thể viết các phiên bản chung của các hoạt động CRUD, trong số những thứ khác. –