@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依賴注入
- SpringDI四種依賴注入方式詳解Spring依賴注入
- @Resource的作用相當於@Autowired,只不過@Autowired按照byType自動注入
- @autowired詳解
- spring下應用@Resource, @Autowired 和 @Inject註解進行依賴注入的差異Spring依賴注入
- @Autowired和@Resource的區別
- @Resource和@Autowired的區別
- @Autowired 和 @ Resource的區別
- @Autowired 與@Resource的區別
- 解決Autowired注入失敗為nullNull
- @Autowired和@Resource有哪些區別
- Spring @Autowired 注入小技巧Spring
- Spring探索:既生Resource,何生Autowired?Spring
- 【Java面試】@Resource 和 @Autowired 的區別Java面試
- 【Java註解用法】@Autowired 與@Resource的區別以及@Qualifier的介紹Java
- Java面試題:讓依賴注入變得簡單,面對@Autowired和@Resource,該如何選擇?Java面試題依賴注入
- Spring注入Bean的幾種方式SpringBean
- Spring @Autowired 註解自動注入流程是怎麼樣?Spring
- @Autowired 注入 **required a single bean, but 2 were found**UIBean
- Spring中bean的四種注入方式SpringBean
- .NetCore中三種注入方式的思考NetCore
- 詳解Python拼接字串的七種方式Python字串
- Spring的三種依賴注入的方式Spring依賴注入
- spring常用的三種依賴注入方式Spring依賴注入
- 詳解vue 路由跳轉四種方式 (帶引數)Vue路由
- 程式間的五種通訊方式介紹-詳解
- 跨平臺程式碼三種組織方式詳解
- Redis詳解 - SpringBoot整合Redis,RedisTemplate和註解兩種方式的使用RedisSpring Boot
- 前端常用6種資料加密方式的使用(最詳解)前端加密
- PHP FFI詳解 - 一種全新的PHP擴充套件方式PHP套件
- 專案啟動報錯怎麼辦?看看你Spring自動注入用對了嘛?@Autowired XxxService注入問題解決Spring
- Spring6框架中依賴注入的多種方式(推薦構造器注入)Spring框架依賴注入
- SpringBoot中普通類無法通過@Autowired自動注入Service、dao等bean解決方法Spring BootBean
- Dependency Injection-依賴注入詳解依賴注入
- spingboot使用@Resource注入靜態變數報空指標的問題解決boot變數指標
- @FeignClient @Resource 無法注入Bean Springboot無法啟動clientBeanSpring Boot
- Laravel Resource Routes和API Resource Routes講解LaravelAPI
- Spring-注入方式Spring