我想了解Spring MVC在自动装配时如何解析子类注入。
例如:
class Person
{
@autowired
private Customer cust;
}
interface Customer{}
class Customer1 implements Customer{}
class Customer2 implements Customer{}
现在Spring将如何知道要在Person中注入哪个类。
如果这是一个重复的问题,请原谅
答案 0 :(得分:1)
在属性上设置 @Autowired 时,它将使用autowire byType来解析协作bean。因此,在您所描述的情况下,它将产生多个限定bean的冲突。
要解决此问题,您应该使用@Qualifier注释,并使用 @Component 或其他适当的注释构造型来命名您的bean
class Person
{
@Qualifier("customer1")
@Autowired
private Customer cust;
}
interface Customer{}
@Component("customer1")
class Customer1 implements Customer{}
@Component("customer2")
class Customer2 implements Customer{}