
概況
@Resource,@Autowired,@Inject 這3種都是用來注入bean的,它們屬于不同的程式中,

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")使用,
推薦去我的博客閱讀更多:
1.Java JVM、集合、多執行緒、新特性系列教程
2.Spring MVC、Spring Boot、Spring Cloud 系列教程
3.Maven、Git、Eclipse、Intellij IDEA 系列工具教程
4.Java、后端、架構、阿里巴巴等大廠最新面試題
覺得不錯,別忘了點贊+轉發哦!
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/176246.html
標籤:Java
上一篇:介面
