Je développe sur une bibliothèque de base java où le changement est maintenu au minimum, il contient un Foo de classe, où Foo est utilisé par une interface de repos de ressort et autowired dans l'interface de repos.Injection de démarrage de la classe héritée
Je dois étendre Foo pour remplacer l'une de ses méthodes qui est appelée sur Foo.init(), pour modifier un peu l'initiation. Mon FooExtend est autowired d'une autre classe dans mon projet, et j'espère obtenir ces deux pour référencer le même objet, l'objet FooExtend, mais pour l'instant je reçois un objet Foo et un FooExtend. Comment devrais-je résoudre ceci? Les exemples ci-dessous
@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
}
}
Je ne suis pas sûr de comprendre votre problème. Vous avez deux beans, un bean avec le nom "foo" et un bean avec le nom "fooExtend". Il me semble que vous devriez pouvoir utiliser @Qualifier ("fooExtend") ou @Qualifier ("foo") avec @Autowired en plus de référence à Foo pour autowire l'un ou l'autre. – MrKiller21