SpringBoot入門教程(十六)@Autowired、@Inject、@Resource


@Resource,@Autowired,@Inject 這3種都是用來注入bean的,它們屬於不同的程序中。詳情參見下表:

v區別

ANNOTATION PACKAGE SOURCE 作用域 實現方式 其它
@AutoWired org.springframework.bean.factory,Spring自帶的方式 Spring 2.5+ 可以用在構造器、方法、屬性、參數、注解上面 通過AutowireAnnotationBeanPostProcessor類實現依賴注入 注入可以根據名字/類型,可以設置required屬性為false指定找不到相應bean時不拋異常
@Resource javax.annotation,是JSR-250標准,JDK6以上自帶,Spring版本要求2.5以上 Java JSR-250 可以用在方法、屬性、類上 通過CommonAnnotationBeanPostProcessor類實現依賴注入 與@AutoWired一致。但可以指定name屬性來指定beanName,但如果name對應的bean不存在,則會拋出異常,且沒有required屬性
@Inject javax.inject,是JSR-303標准,Spring版本3以上。需要導入外部依賴 Java JSR-330 可以用在方法、屬性、構造器上 通過AutowiredAnnotationBeanPostProcessor類實現依賴注入 與@AutoWired一致,區別在於@Inject沒有required屬性

v實現方式

2.1 @Inject

如下是@Inject的使用,不加@Named注解,需要配置與變量名一致即可。

    @Inject
    @Named("mongo")
    private Mongo mongo;

2.2 @Autowired

@Autowired有個屬性為required,可以配置為false,如果配置為false之后,當沒有找到相應bean的時候,系統不會拋錯。

    @Autowired
    private MongoTemplate mongoTemplate;

2.3 @Resource

@Resource一般會指定一個name屬性,如下

    @Resource(name = "testMapper")
    private TestMapper testMapper;

v源碼地址

https://github.com/toutouge/javademosecond/tree/master/hellospringboot


作  者:請叫我頭頭哥
出  處:http://www.cnblogs.com/toutou/
關於作者:專注於基礎平台的項目開發。如有問題或建議,請多多賜教!
版權聲明:本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文鏈接。
特此聲明:所有評論和私信都會在第一時間回復。也歡迎園子的大大們指正錯誤,共同進步。或者直接私信
聲援博主:如果您覺得文章對您有幫助,可以點擊文章右下角推薦一下。您的鼓勵是作者堅持原創和持續寫作的最大動力!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM