@Autowired在注入 有多个实现类的接口时会怎么样?

默认按照类型去容器中查找

  • 即实现类只有1个时。不存在问题

多个相同类型的组件,将属性名作为组件的id去容器中查找

  • 即变量名 以要注入的实现类的小写 来起。

Autowired默认先按byType,如果发现找到多个bean,则,又按照byName方式比对,如果还有多个,则报出异常。

1.可以手动指定按byName方式注入,使用@Qualifier。

//通过此注解完成从spring配置文件中 查找满足Fruit的bean,然后按//@Qualifier指定pean

@Autowired

@Qualifier(“pean”)

public Fruit fruit;

2.如果要允许null 值,可以设置它的required属性为false,如:@Autowired(required=false)

你可能感兴趣的:(spring)