SpringMVC 原始碼深度解析(context:component-scan)(掃描和註冊的註解Bean)。
轉自:http://www.2cto.com/kf/201411/349920.html
我們在SpringMVC開發專案中,有的用註解和XML配置Bean,這兩種都各有自己的優勢,資料來源配置比較經常用XML配置,控制層依賴的service比較經常用註解等(在部署時比較不會改變的),我們經常比較常用的註解有@Component是通用標註,@Controller標註web控制器,@Service標註Servicec層的服務,@Respository標註DAO層的資料訪問。SpringMVC啟動時怎麼被自動掃描然後解析並註冊到Bean工廠中去(放到DefaultListableBeanFactory中的Map beanDefinitionMap中 以BeanName為key)?我們今天帶著這些問題來了解分析這實現的過程,我們在分析之前先了解一下這些註解。
@Controller標註web控制器,@Service標註Service層的服務,@Respository標註DAO層的資料訪問。@Component是通用標註,只是定義為一個類為Bean,SpringMVC會把所有新增@Component註解的類作為使用自動掃描注入配置路徑下的備選物件。@Controller、@Service\@Respository只是更加的細化,都是被@Component標註,所以我們比較不推薦使用@Component。原始碼如下:
?1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
@Target ({ElementType.TYPE})
@Retention (RetentionPolicy.RUNTIME)
@Documented
@Component
public
@interface
Service {
String
value() default
"" ;
}
@Target ({ElementType.TYPE})
@Retention (RetentionPolicy.RUNTIME)
@Documented
@Component
public
@interface
Controller {
String
value() default
"" ;
}
@Target ({ElementType.TYPE})
@Retention (RetentionPolicy.RUNTIME)
@Documented
@Component
public
@interface
Repository {
String
value() default
"" ;
}
|
都是有標示@Component
我們在配置檔案中,標示配置需要掃描哪些包下,也可以配置對某個包下不掃描,程式碼如下:
相關推薦
SpringMVC 原始碼深度解析(context:component-scan)(掃描和註冊的註解Bean)。
轉自:http://www.2cto.com/kf/201411/349920.html 我們在SpringMVC開發專案中,有的用註解和XML配置Bean,這兩種都各有自己的優勢,資料來源配置比較經常用XML配置,控制層依賴的service比較經常用註解等(在
併發程式設計(十二)—— Java 執行緒池 實現原理與原始碼深度解析 之submit方法 (二)
在上一篇《併發程式設計(十一)—— Java 執行緒池 實現原理與原始碼深度解析(一)》中提到了執行緒池ThreadPoolExecutor的原理以及它的execute方法。這篇文章是接著上一篇文章寫的,如果你沒有閱讀上一篇文章,建議你去讀讀。本文解析ThreadPoolExecutor#submit。
SpringMVC 原始碼深度解析BeanWrapper及其實現
一、 BeanWrapper BeanWrapper是對Bean的包裝,其介面中所定義的功能很簡單包括設定獲取被包裝的物件,獲取被包裝bean的屬性描述器,由於BeanWrapper介面是PropertyAccessor的子介面,因此其也可以設定以及訪問被包裝物件的屬性
SpringMVC原始碼深度解析之攔截器&過濾器&檢視層&非同步原始碼分析
SpringMVC註解方式開啟檢視層 整合Jsp 檢視層 @Bean public InternalResour
spring5 原始碼深度解析----- 事務增強器(100%理解事務)
上一篇文章我們講解了事務的Advisor是如何註冊進Spring容器的,也講解了Spring是如何將有配置事務的類配置上事務的,實際上也就是用了AOP那一套,也講解了Advisor,pointcut驗證流程,至此,事務的初始化工作都已經完成了,在之後的呼叫過程,如果代理類的方法被呼叫,都會呼叫BeanFact
曹工說Spring Boot原始碼(12)-- Spring解析xml檔案,到底從中得到了什麼(context:component-scan完整解析)
寫在前面的話 相關背景及資源: 曹工說Spring Boot原始碼(1)-- Bean Definition到底是什麼,附spring思維導圖分享 曹工說Spring Boot原始碼(2)-- Bean Definition到底是什麼,咱們對著介面,逐個方法講解 曹工說Spring Boot原始碼(3)--
曹工說Spring Boot原始碼(11)-- context:component-scan,你真的會用嗎(這次來說說它的奇技淫巧)
寫在前面的話 相關背景及資源: 曹工說Spring Boot原始碼(1)-- Bean Definition到底是什麼,附spring思維導圖分享 曹工說Spring Boot原始碼(2)-- Bean Definition到底是什麼,咱們對著介面,逐個方法講解 曹工說Spring Boot原始碼(3)--
spring原始碼深度解析筆記(三)
之前提到在xmlBeanFactory建構函式中呼叫了XmlBeanDefinitionReader型別的reader屬性提供的方法this.reader.loadBeanDefinitions(resource),這就是載入整個資源載入的切入點。 當進入XmlBeanDe
spring原始碼深度解析筆記(四)
DTD與XSD的區別 DTD(Document Type Definition)即文件型別定義,是一種XML約束模式語言,是XML檔案的驗證機制,是屬於XML檔案組成的一部分。DTD是一種保證XML文件格式正確的有效方法,可以通過比較XML文件和DTD檔案來看
SpringMVC配置檔案詳解:<context:annotation-config/>和<context:component-scan base-package=""/>和<mvc:annotation-driven /> Spring配置檔
原文地址:https://www.cnblogs.com/lcngu/p/5080702.html Spring配置檔案詳解:<context:annotation-config/>和<context:component-scan base-package=""/>和<mvc:
Spring原始碼深度解析總結(3)—— 配置檔案的讀取和Bean的載入(一)
上一篇總結了Spring利用Resource介面對配置檔案的封裝,接下來我們要看看Spring對封裝好的資源是如何解析的,以及如何利用解析出的資訊載入Bean的。BeanFactory bf = new XmlBeanFactory(new ClassPathResoure(
Spring原始碼深度解析(四)容器的基礎XmlBeanFactory
現在我們已經對Srping的容器有了一個大概的瞭解,儘管很多地方還很迷糊,但是不要緊,下面我們開始探討每個步驟的詳細實現。接下來我們要深入分析以下程式碼的實現: BeanFactory bf = new XmlBeanFactory(new ClassPathResourc
mysql核心原始碼深度解析 緩衝池 buffer pool 整體概述(bufferpool部分一)
老劉原創文章,CSDN首發!轉載請註明出處。 mysql的記憶體管理龐大而先進,這在mem0pool.c檔案的開頭註釋中都有說明,粗略的可以分成四部分,包含9大塊: buffer pool, parsed andoptimized SQL statements, dat
併發程式設計(十一)—— Java 執行緒池 實現原理與原始碼深度解析(一)
史上最清晰的執行緒池原始碼分析 鼎鼎大名的執行緒池。不需要多說!!!!! 這篇部落格深入分析 Java 中執行緒池的實現。 總覽 下圖是 java 執行緒池幾個相關類的繼承結構: 先簡單說說這個繼承結構,Executor 位於最頂層,也是最簡單的,就一個 execute(
Spring原始碼深度解析(一)Spring的整體架構
spring框架是一個分層架構,它包含一系列的功能要素,被分為大約20個模組,如下圖所示: spring整體架構圖 這些模組被總結為以下幾個部分: (1)Core Container Core
Intellij IDEA配置springMVC時提示"context:component-scan" is not bound
xxx-servlet.xml配置 <context:component-scan base-package="包名" /> 時,報錯:The prefix "context" for e
Spring原始碼深度解析總結(6)—— 配置檔案的讀取和Bean的載入(四)
經過前面的分析,我們終於結束了對XML配置檔案的解析,接下來將會面對更大的挑戰,就是對bean載入的探索。bean載入的功能的實現遠比bean的解析複雜的多,同樣,我們還是以最簡單的示例為基礎,對於bean的功能,在Spring中的呼叫方式為:MyTestBean bean
Spring原始碼深度解析總結(1)——XmlBeanFactory的結構組成
最近在讀《Spring原始碼深度分析》這本書,雖然講的是Spring3.0版本的東西,但是基本的思想還是相同的。所以我打算一邊讀一邊做一些總結,一方面在看過一邊之後再捋一遍整體的過程,另一方面也防止日後忘記某些東西無處可查。 在開始原始碼閱讀之前,我們首先要了解一下Spri
Spring原始碼深度解析(XmlBeanFactory原始碼解析上)
前言: Spring容器有多種實現方式,一般來說可分為:BeanFactory和ApplicationContext * BeanFactory提供了容器的基本功能,如getBean()等功能 * ApplicationContext介面繼承
spring原始碼深度解析---預設標籤解析(下)
spring原始碼深度解析—預設標籤解析(下) 在spring原始碼深度解析—預設標籤解析(上)中我們已經完成了從xml配置檔案到BeanDefinition的轉換,轉換後的例項是GenericBeanDefinition的例項。而GenericBeanDef