使用@Qualifier("beanName")
和@Component("beanName")
有什么区别吗?
如果没有,有没有首选的方法?
答案 0 :(得分:2)
通常,在组件上使用@Component("beanName")
,在要自动装配的类上使用@Qualifier("beanName")
。例如
@Component("myComponent1")
public class MyComponent1 implements MyComponent {
....
}
@Component("myComponent2")
public class MyComponent2 implements MyComponent {
....
}
@Service
public class SomeService implements MyService {
@Qualifier("myComponent1")
private MyComponent myComponent;
...
}
如果一个bean /组件的实现不止一个,spring将不知道要选择哪个bean,因此您需要使用一个限定符来指定哪个是正确的。
此外,您还可以在其中一个组件上使用@Primary
,因此默认情况下始终选中它。
答案 1 :(得分:0)
它们完全是两回事,听起来像是您在将苹果和橙子与我进行比较。
@Component
用于将类声明为Spring bean,而您无法使用@Qualifier
来实现。
@Qualifier
旨在帮助Spring确定如果要注入的豆超过1个,则要注入哪个bean。它通常与@Autowired
一起使用,这对注入点增加了更多约束,因此只能注入一个bean。