Ich entwickle auf eine Java-Core-Bibliothek, die Änderung auf ein Minimum gehalten wird, hält es eine Klasse Foo, wo Foo von einer Federauflage-Schnittstelle verwendet wird und in die Ruhe-Schnittstelle autowired.Spring Boot-Injektion von geerbten Klasse
Ich muss Foo erweitern, um eine der Methoden, die auf Foo.init() aufgerufen wird, zu überschreiben, um die Einleitung ein wenig zu ändern.
Mein FooExtend wird von einer anderen Klasse in meinem Projekt autowired, und ich hoffe, dass diese beiden zu bekommen das gleiche Objekt zu verweisen, die FooExtend Objekt, aber im Moment habe ich bekommen ein Foo-Objekt und ein FooExtend. Wie soll ich das lösen? Beispiele unten
@Component
public class Foo{
@PostConstruct
private void init() {
startStuff();
}
protected void startStuff(){
//Stuff done here
}
}
@Component
public class FooExtend extends Foo{
@PostConstruct
private void init() {
//Nothing is done here
}
@Override
protected void startStuff(){
//Different altered stuff is done here
}
}
Ich bin mir nicht sicher, ob ich Ihr Problem verstehe. Sie haben zwei Bohnen, eine Bohne mit dem Namen "foo" und eine Bohne mit dem Namen "fooExtend". Es scheint mir, dass Sie in der Lage sein sollten, @Qualifier ("fooExtend") oder @Qualifier ("foo") zusammen mit @Autowired über dem Verweis auf Foo zu verwenden, um den einen oder anderen zu starten. – MrKiller21