interface A{
void some();
}
@Component
class B implements A{
@override
some(){
}
}
@Component
class C implements A{
@override
some(){
}
}
Class D {
@Autowired
List<A> somes;//will it have the instances of both
}
I am working on a project where we have multiple classes implement the same interface. How do I get the list in class D to contain beans for both class B and class C?
Actually you will get a resolving bean conflicts exception,
There are a various solutions for that :
@Component
@Primary
class B implements A{
@override
some(){
}
}
@Component
class C implements A{
@override
some(){
}
}
Class D {
@Autowired
List<A> somes;//B will be injected because it primary
}
@Component("beanB")
class B implements A{
@override
some(){
}
}
@Component("beanC")
class C implements A{
@override
some(){
}
}
Class D {
@Autowired
@Qualifier("beanB")
List<A> somes;//B will be injected because of @Qualifier
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With