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:component-scan> 標籤Context
- cookie與session的區別與聯絡CookieSession
- Session與Cookie的區別與聯絡SessionCookie
- JRE與JDK的區別與聯絡JDK
- 陣列地址與指標之間的區別與聯絡陣列指標
- Context真正的實現與Context設計模式Context設計模式
- Kafka與ActiveMQ的區別與聯絡詳解KafkaMQ
- 詳解Kafka與ActiveMQ的區別與聯絡!KafkaMQ
- B/S與C/S的聯絡與區別
- 淺析HTML、CSS、JavaScript之間的聯絡與區別!HTMLCSSJavaScript
- jQuery與JavaScript與ajax三者的區別與聯絡jQueryJavaScript
- 感知器、logistic與svm 區別與聯絡
- 大資料分析與機器學習之間的區別與聯絡大資料機器學習
- ipv4與ipv6的聯絡與區別
- javaSE中的==和equals的聯絡與區別Java
- 簡述Spring容器與SpringMVC的容器的聯絡與區別SpringMVC
- Spring 系列(四):我們來聊聊<context:component-scan/>SpringContext
- HDFS 塊和 Input Splits 的區別與聯絡
- 程式和執行緒的區別與聯絡執行緒
- React 之 Context 的變遷與背後實現ReactContext
- 一篇讓你明白程式與執行緒之間的區別與聯絡執行緒
- KPI vs OKR:區別與聯絡的終極指南KPIOKR
- Vue中watch、computed與methods的聯絡和區別Vue
- 單機、分散式、叢集的區別與聯絡分散式
- 一文搞懂灰度釋出與 AB Test 的聯絡與區別
- Python中__new__和__init__的區別與聯絡Python
- 叢集、負載均衡、分散式的區別與聯絡負載分散式
- Go:context.ContextGoContext
- 知識點,JavaScript與Java之間有什麼區別和聯絡?JavaScript
- 先驗概率與後驗概率、貝葉斯區別與聯絡
- 【clickhouse專欄】資料庫、資料倉儲之間的區別與聯絡資料庫
- ARM晶片、核心、架構、指令集的聯絡與區別晶片架構
- Unicode,UTF-8和UTF-16的區別與聯絡Unicode
- 微信網頁授權之access_token和refreshtoken區別與聯絡網頁
- shell與Linux命令有什麼區別?它們之間有聯絡嗎?Linux
- 資料倉儲、資料湖與湖倉一體的區別與聯絡
- 傳統採購管理與現代採購管理之間的區別和聯絡
- 跟你深入剖析可迭代物件和迭代器的區別與聯絡物件