Tengo una clase abstracta AbstractService
que tiene una referencia a AbstractDAO
Autowire dependiendo de la subclase
class AbstractService{
protected AbstractDAO abstractDAO;
}
AbstractService
se extenderá por clases de servicios reales como ServiceClassA
, ServiceClassB
etc, y AbstractDAO
se extenderá por DaoClassA
, DaoClassB
etc.
Dependiendo de la clase que se extienda AbstractService
, abstractDAO
debe ser una instancia de DaoClassA
, DaoClassB
etc
puedo lograr esto a través de la incubadora abstractDAO en la clase que se extiende como
class ServiceClassA{
@Autowired
@Qualifier("daoClassA")
public void setAbstractDAO(AbstractDAO abstractDAO) {
super.abstractDAO = abstractDAO;
}
}
¿Hay alguna manera de tener la incubadora setAbstractDAO
en AbstractService
clase misma y abstractDAO
consigue Autowired dependiendo de la subclase tal wth SPEL + Calificador etc
no queremos utilizar cualquier configuración XML de este
¿Hay alguna razón por la que no se puede poner, por ejemplo, '@Autowired DaoClassA dao' en' ServiceClassA'? ¿Por qué el campo debe declararse en 'AbstractService'? – skaffman
Gran pregunta. Siempre he hecho algo similar al enfoque que describes (ligeramente diferente, pero la misma idea básica) y siempre he querido algo un poco más automático. Ansioso por ver si alguien tiene un buen enfoque. –
@skaffman En casos que he tenido, quería que AbstractService tuviera acceso a AbstractDao para poder escribir versiones generales de las operaciones de CRUD, entre otras cosas. –