spring專案無法引入@Resource註解問題
阿新 • • 發佈:2018-12-11
問題:在spring專案中引入@Resource註解的時候,有紅色下劃線錯誤,而且輸入註解的時候不能出現自動程式碼補全。
解決辦法:Spring專案中缺少javax.annotation包的依賴。在maven配置檔案pom.xml中加入依賴。
<!-- https://mvnrepository.com/artifact/javax.annotation/javax.annotation-api --> <dependency> <groupId>javax.annotation</groupId> <artifactId>javax.annotation-api</artifactId> <version>1.2</version> </dependency>
1、在spring的配置檔案中匯入名稱空間
xmlns:context="http://www.springframework.org/schema/context"
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-2.5.xsd
2、引入註解解析器
context:annotation-config></context:annotation-config>
3、在spring的配置檔案中把bean引入進來
4、在一個類的屬性上加
@Resource(name="student_annotation") private Student student; 從該註解本身 @Target({TYPE, FIELD, METHOD}) @Retention(RUNTIME) public @interface Resource { String name() default ""; }
1、該註解可以用於屬性上或者方法上,但是一般用於屬性上
2、該註解有一個屬性name,預設值為""
5、分析整個過程
1、當啟動spring容器的時候,spring容器載入了配置檔案
2、在spring配置檔案中,只要遇到bean的配置,就會為該bean建立物件
3、在納入spring容器的範圍內查詢所有的bean,看哪些bean的屬性或者方法上加有@Resource
4、找到@Resource註解以後,判斷該註解name的屬性是否為""(name沒有寫)
如果沒有寫name屬性,則會讓屬性的名稱的值和spring中ID的值做匹配,如果匹配成功則賦值
如果匹配不成功,則會按照型別進行匹配,如果匹配不成功,則報錯
如果有name屬性,則會按照name屬性的值和spring的bean中ID進行匹配,匹配成功,則賦值,不成功則報錯