@Resource,@Autowired,@Inject3種注入方式詳解
轉載自 @Resource,@Autowired,@Inject3種注入方式詳解
概況
@Resource,@Autowired,@Inject 這3種都是用來注入bean的,它們屬於不同的程式中。
ANNOTATION | PACKAGE | SOURCE |
---|---|---|
@Resource | javax.annotation | Java JSR-250 |
@Inject | javax.inject | Java JSR-330 |
@Autowired | org.springframework.bean.factory | Spring 2.5+ |
JSR是Java Specification Requests的縮寫,意思是Java 規範提案。是指向JCP(Java Community Process)提出新增一個標準化技術規範的正式請求。任何人都可以提交JSR,以向Java平臺增添新的API和服務。JSR已成為Java界的一個重要標準。
區別
@Resource
它有兩個關鍵的屬性:name-名稱,type-型別
1、如果指定了name,type,則從Spring容器中找一個名稱和型別相當應的一個bean,找不到則報錯。
2、如果只指定了name,則從Spring容器中找一個名稱和name一樣的bean,找不到則報錯。
3、如果只指定了type,則從Spring容器中找一個型別和type一樣的bean,找不到或者找到多個則報錯。
4、如果沒有指定引數,則預設找欄位名稱裝配,找不到則按型別裝配,找不到則報錯。
@Autowired
預設按型別裝配,找不到或者找到多個則報錯。
如果要按名稱裝配,需要結合Spring另外一個註解Qualifier("name")使用。
預設必須裝配requred=true,如果可以為空,可以設定為false,在Spring4+結合jdk8+的情況下還可以使用Optional和false同等的效果,如
@Autowired
private Optional<UserService> userService;
@Inject
和@Autowired類似,可以完全代替@Autowired,但這個沒有required屬性,要求bean必須存在。
如果要按名稱裝配,需要結合javax另外一個註解N("name")使用。
相關文章
- 聊聊依賴注入註解@Resource和@Autowired依賴注入
- @Resource的作用相當於@Autowired,只不過@Autowired按照byType自動注入
- SpringDI四種依賴注入方式詳解Spring依賴注入
- @autowired詳解
- spring下應用@Resource, @Autowired 和 @Inject註解進行依賴注入的差異Spring依賴注入
- 解決Autowired注入失敗為nullNull
- @Autowired 與@Resource的區別
- @Autowired 和 @ Resource的區別
- @Resource和@Autowired的區別
- @Autowired與@Resource的區別
- @Autowired和@Resource的區別
- @Autowired和@Resource有哪些區別
- Spring5:@Autowired註解、@Resource註解和@Service註解Spring
- Spring依賴注入的兩種方式(根據例項詳解)Spring依賴注入
- 【Java面試】@Resource 和 @Autowired 的區別Java面試
- Spring @Autowired 注入小技巧Spring
- Spring探索:既生Resource,何生Autowired?Spring
- Spring Boot 注入介面 @Autowired interfaceSpring Boot
- Java面試題:讓依賴注入變得簡單,面對@Autowired和@Resource,該如何選擇?Java面試題依賴注入
- 四種XML解析方式詳解XML
- spring的四種注入方式Spring
- 【Java註解用法】@Autowired 與@Resource的區別以及@Qualifier的介紹Java
- 「JavaScript」四種跨域方式詳解JavaScript跨域
- JavaScript 各種遍歷方式詳解JavaScript
- Spring注入Bean的幾種方式SpringBean
- Spring @Autowired 註解自動注入流程是怎麼樣?Spring
- @Autowired 注入 **required a single bean, but 2 were found**UIBean
- mysql備份的三種方式詳解MySql
- Drawable Resource 之旅(一):BitmapDrawable 詳解
- Spring中bean的四種注入方式SpringBean
- Spring IOC三種注入方式比較Spring
- 詳解Python拼接字串的七種方式Python字串
- .NetCore中三種注入方式的思考NetCore
- spring常用的三種依賴注入方式Spring依賴注入
- Spring的三種依賴注入的方式Spring依賴注入
- EF三種程式設計方式圖文詳解程式設計
- 各種字元編碼方式詳解及由來字元
- SQL 注入技術詳解SQL