Spring使用@Autowired注入Bean


@Autowired是Spring3.0引入的注解,可以标注在类的属性上,这样Spring容器就会采取byType的方式来注入对应的Bean。

@Autowired private Instrument instrument;

如果Spring容器中不存在一个类型为Instrument的Bean,那么在启动程序的时候就会报错:NoSuchBeanDefinitionException。还有一种会报错的情况,就是Spring容器中存在多个类型为(is-a)Instrument的Bean,抛出的异常与上面一样。因为Spring容器此时不知道该使用哪一个Bean来注入到属性中,这是一个Fail-Fast的策略。那么如何解决存在多个相同类型的Bean的情况呢?可以使用@Qualifier注解。

@Autowired @Qualifier("guitar") private Instrument instrument;

@Qualifier在这里告诉Spring容器如果存在多个类型为Instrument的Bean,那么就使用id为guitar的Bean来注入instrument这个属性。@Qualifier的作用是缩小@Autowire的范围。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM