annotation之context:annotation-config與 context:component-scan的區別與聯絡
註解的作用基本有三個:
1、生成文件:是java 最早提供的註解。常用的有 @see @param @return 等
2、跟蹤程式碼依賴性,實現替代配置檔案功能:比較常見的是spring 2.5 開始的基於註解配置。作用就是減少配置。現在的框架基本都使用了這種配置來減少配置檔案的數量。
3、在編譯時進行格式檢查:如@override 放在方法前,如果你這個方法並不是覆蓋了超類方法,則編譯時就能檢查出。
附:java註解的知識網路
一、共同點
掃描註解,替代get/set方法,完成自動注入
二、不同點
1、 <context:annotation-config/>只掃描註解,不負責建立javabean;只有當自己在xml中手動配置bean後,手動建立的bean已經被註冊到spring容器裡,才能實現自動注入;
2、 <context:component-scan base-package=url/>可以掃描註解;其base-package屬性指定了需要掃描的類包,類包及其遞迴子包中所有的類都會可以建立掃描包下的Javabean,即有這一個配置後,就不用再手動配置bean,只要需要的bean在掃描包下就可以利用註解實現自動注入;概括就是:可以自動將base-package配置包及其遞迴子包下的類自動建立bean並註冊到spring容器中,還能掃描註解,掃描到需要裝配的節點時,代替get/set方法自動注入到所需類的屬性中;
注:配置了 <context:annotation-config/>或 <context:component-scan/>後,系統之所以能夠識別相應的註解,是因為此配置隱式的向 Spring 容器註冊了
AutowiredAnnotationBeanPostProcessor、
CommonAnnotationBeanPostProcessor、
PersistenceAnnotationBeanPostProcessor 、
RequiredAnnotationBeanPostProcessor
這 4 個BeanPostProcessor ,如果手動配置如下:
@Autowired
<bean class= "org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor" />
@ Resource 、@ PostConstruct、@ PreDestroy
<bean class= "org.springframework.beans.factory.annotation.CommonAnnotationBeanPostProcessor" />
@PersistenceContext
<bean class= "org.springframework.beans.factory.annotation.PersistenceAnnotationBeanPostProcessor " />
@Required
<bean class= "org.springframework.beans.factory.annotation.RequiredAnnotationBeanPostProcessor" />
注:如果在配置檔案中配置了<context:component-scan />
,就不用在配置<context:annotation-config/>
,因為前者已經包含了後者。
相關文章
- <context:annotation-config/>、<context:component-scan/>Context
- Spring <context:annotation-config/>SpringContext
- cookie與session的區別與聯絡CookieSession
- Session與Cookie的區別與聯絡SessionCookie
- 同步與阻塞的區別與聯絡
- hive與hbase的聯絡與區別Hive
- onchange與onpropertychange的聯絡與區別!
- BS與CS的聯絡與區別
- define與typedef區別與聯絡
- JRE與JDK的區別與聯絡JDK
- 陣列地址與指標之間的區別與聯絡陣列指標
- 大資料分析與機器學習之間的區別與聯絡大資料機器學習
- TCP、UDP、HTTP、SOCKET之間的區別與聯絡TCPUDPHTTP
- <context:component-scan> 標籤Context
- Kafka與ActiveMQ的區別與聯絡詳解KafkaMQ
- 詳解Kafka與ActiveMQ的區別與聯絡!KafkaMQ
- B/S與C/S的聯絡與區別
- 關於HashSet與TreeSet的區別與聯絡
- Oracle FailSafe與rac的聯絡與區別OracleAI
- Android與Java ME的區別與聯絡AndroidJava
- COM與DCOM的區別與聯絡 (轉)
- Session和Cookie的聯絡與區別SessionCookie
- CGI與Servlet的區別和聯絡Servlet
- Session和Cookie的區別與聯絡SessionCookie
- Apache與Tomcat 區別聯絡ApacheTomcat
- 淺析HTML、CSS、JavaScript之間的聯絡與區別!HTMLCSSJavaScript
- Oracle FailSafe與rac的聯絡與區別(zt)OracleAI
- Linux和Ubuntu的區別與聯絡LinuxUbuntu
- connection session process的聯絡與區別Session
- COM/DCOM的區別與聯絡 (轉)
- jQuery與JavaScript與ajax三者的區別與聯絡jQueryJavaScript
- JDK,JRE,JVM區別與聯絡JDKJVM
- servlet/filter/listener/interceptor區別與聯絡ServletFilter
- ipv4與ipv6的聯絡與區別
- javaSE中的==和equals的聯絡與區別Java
- Context真正的實現與Context設計模式Context設計模式
- 感知器、logistic與svm 區別與聯絡
- 程式和執行緒的區別與聯絡執行緒