1. 程式人生 > >spring專案無法引入@Resource註解問題

spring專案無法引入@Resource註解問題

問題:在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進行匹配,匹配成功,則賦值,不成功則報錯