Autowire je nach Unterklasse

Ich habe eine abstrakte Klasse AbstractService die einen Verweis auf AbstractDAO

class AbstractService{  
   protected AbstractDAO abstractDAO;  
}

AbstractService wird erweitert durch aktuelle service-Klassen, wie ServiceClassA , ServiceClassB etc,
und AbstractDAO wird ergänzt durch DaoClassA , DaoClassB etc.

Je nachdem, welche Klasse erweitert AbstractService, abstractDAO sollte eine Instanz von DaoClassA , DaoClassB etc

Kann ich dies erreichen, indem er die abstractDAO setter in der Verlängerung Klasse wie

class ServiceClassA{    
    @Autowired  
    @Qualifier("daoClassA")  
    public void setAbstractDAO(AbstractDAO abstractDAO) {  
        super.abstractDAO = abstractDAO;  
    }   
}  

Gibt es irgendeine Möglichkeit zu haben, den setter setAbstractDAO im AbstractService Klasse selbst
und abstractDAO bekommt Autowired je nach Unterklasse vielleicht wth SPEL+Qualifier etc

Wollen wir gar nicht verwenden keine XML-Konfiguration für dieses

  • Gibt es einen Grund, Sie können nicht z.B. @Autowired DaoClassA dao in ServiceClassA? Warum wird das Feld muss deklariert werden in AbstractService?
  • Gute Frage. Ich habe immer etwas getan, ähnlich dem Ansatz, den Sie beschreiben (etwas anders, aber die gleiche Grundidee) und ich wollte schon immer etwas mehr Automatik. Eager, um zu sehen, ob jemand hier einen guten Ansatz.
  • In den Fällen, die ich hatte, wollte ich den AbstractService Zugang zu den AbstractDao so, ich könnte schreiben, Allgemeine Versionen von CRUD-Operationen, unter anderem.
  • Gibt es mehrere Implementierungen von AbstractService und wir wollen nicht zu haben, das Feld deklariert in allen Klassen Verlängerung AbstractService
Schreibe einen Kommentar