spring:自定义限定符注解@interface, 首选bean
1.首选bean
在声明bean的时候,通过将其中一个可选的bean设置为首选(primary)bean能够避免自动装配时的歧义性。当遇到歧义性的时候,Spring将会使用首选的bean,而不是其他可选的bean。实际上,你所声明就是“最喜欢”的bean。
假如有一个接口类:
public interface Dessert{}....
其中有3个类都集成了它
@Component
public class Cake implements Dessert{}
@Component
public class IceCream implements Dessert{}
@Component
public class cookies implements Dessert{}
因为3个类都使用了@Component注解,在组件扫描一下代码时,发现bean并不是唯一的,是带有歧义的bean,并报错,代码如下:
@Autowired
public void setDessert(Dessert dessert){
this.dessert = dessert
}
这是需要在其中的一个bean上设置为首选(primary),代码如下:
@Component
@Primary
public class IceCream implements Dessert{}
2限定符注解@Qualifier
3自定义限制符注解@interface