Bitte gehen Sie die komplette Frage durch, bevor Sie das Duplikat markieren. Kann mehr in Kommentaren diskutierenBedingte Bohne in anderer Bohne mit Contructor-Einspritzung verdrahten
Ich habe folgenden Code, wo ServiceA von ServiceB abhängt. Und serviceB Implementierung bean bedingt
initialisiert wirdclass ServiceA{
ServiceB serviceB;
ServiceA(ServiceB serviceB){
this.serviceB = serviceB;
}
}
@Configuration
class AppConfig{
@Conditional("some_condition_based_on_property")
@Bean
ServiceB serviceB1(){
return new ServiceBImpl1();
}
@Conditional("some_condition_based_on_property")
@Bean
ServiceB serviceB2(){
return new ServiceBImpl2();
}
@Bean
ServiceA serviceA(){
//what should go here so that conditional bean is injected in ServiceA
}
}
Ich kann nicht automatisch erkennen ServiceA Bohne, wie ich es in einer Karte mit einem gewissen Schlüssel injizieren müssen. Eine Option, die ich sehe, ist, Bau Injektion zu entfernen, und habe serviceB bean @autowired in ServiceA, die letzte Option für mich wäre. Irgendeine andere Wahl?
Edit: Ich möchte nicht, wenn sonst während der Injektion, wie die Bohnen an verschiedenen Orten definiert werden können. Ich werde nur @Conditional
Mögliche Duplikate von http://stackoverflow.com/questions/19225115/how-to-do-conditional-auto-wiring-in-spring? – aksappy
können Sie http://stackoverflow.com/questions/19225115/how-to-do-conditional-auto-wiring-in-spring überprüfen –
Die Frage aktualisiert. Die damit verbundene Frage löst mein spezifisches Problem nicht – sidgate