ho una classe astratta AbstractService
che ha un riferimento a AbstractDAO
Autowire a seconda della sottoclasse
class AbstractService{
protected AbstractDAO abstractDAO;
}
AbstractService
sarà esteso per classi di servizio effettivo come ServiceClassA
, ServiceClassB
ecc, e AbstractDAO
sarà prorogato di DaoClassA
, DaoClassB
ecc
seconda di quale classe sta estendendo AbstractService
, abstractDAO
dovrebbe essere un'istanza di DaoClassA
, DaoClassB
ecc
posso realizzare questo avendo il setter abstractDAO nella classe che estende come
class ServiceClassA{
@Autowired
@Qualifier("daoClassA")
public void setAbstractDAO(AbstractDAO abstractDAO) {
super.abstractDAO = abstractDAO;
}
}
Esiste un modo per avere il setter setAbstractDAO
in AbstractService
classe stessa e abstractDAO
ottiene Autowired a seconda della sottoclasse forse wth SPEL + Qualifier ecc
Non vogliamo usare qualsiasi configurazione XML per questo
C'è qualche ragione per cui non si può mettere per esempio '@Autowired DaoClassA dao' in' ServiceClassA'? Perché il campo deve essere dichiarato in "AbstractService"? – skaffman
Ottima domanda. Ho sempre fatto qualcosa di simile all'approccio che descrivi (leggermente diverso, ma la stessa idea di base) e ho sempre desiderato qualcosa di un po 'più automatico. Desideroso di vedere se qualcuno ha un buon approccio. –
@skaffman Nei casi che ho avuto, volevo che l'AbstractService avesse accesso a AbstractDao per poter scrivere, tra le altre cose, le versioni generali delle operazioni CRUD. –