@Qualifier("beanName") 和 @Component("beanName") 的区别

Kam*_*man 2 spring

using@Qualifier("beanName")和之间有什么区别@Component("beanName")吗?如果没有,是否有首选方法?

mad*_*fox 6

通常,您@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;

    ...

}
Run Code Online (Sandbox Code Playgroud)

如果一个 bean/组件有多个实现,spring 将不知道选择哪个 bean,因此您需要使用限定符来指定哪个是正确的。

此外,您可以@Primary在其中一个组件上使用,因此默认情况下它始终处于选中状态。