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