Spring總體架構分爲如下幾部分:java
1.Core模塊:包含Spring框架的基本核心工具類,Spring其它組件都要使用到這個包中的類,Core模塊是其它組件的基本核心。git
2.Beans模塊,包含訪問配置文件,建立和管理bean以及進行IoC/DI(控制反轉/依賴注入,上一篇文章中詳細分析了這兩個概念)操做相關的全部類。spring
3.Context模塊構建於Core和Beans模塊基礎之上,提供了相似於JNDI註冊器的框架式的對象訪問方法。Context模塊繼承了Beans的特性,爲Spring核心提供大量擴展,添加了對國際化(例如資源綁定),事件傳播,資源加載和對Context的透明建立的支持編程
4.Expression language模塊提供了一個強大的表達式語言用於在運行時查詢和操縱對象。該語言支持設置/獲取屬性的值,屬性的分配,方法的調用,訪問數組上下文,容器和索引器,邏輯和算術運算符,命名變量以及從Spring的IoC容器中根據名稱檢索對象,它也支持list投影,選擇和通常的list聚合。數組
Data Access/Integration層包含JDBC,ORM,OXM,JMS和Transaction模塊。架構
Web層包含Web,Web-Servlet,Web-Struts和Web-Porlet模塊。(這兩層以後進行學習講解)框架
AOP模塊提供了一個符合AOP聯盟變準的面向切面編程的實現,它讓你能夠定義例如方法攔截器和切點,從而將邏輯代碼分開,下降他們之間的耦合性。利用source-level的元數據功能,還能夠將各類行爲信息合併到你的代碼中。eclipse
spring源碼導入eclipse這裏筆者就不作過多贅述了,可是要注意兩點,第一點是導入以後源碼之間的依賴關係,另外一電視jdk的版本,不可以太低,在使用git工具
下載源碼時候,對jdk的版本要求最低是1.8,這點極爲重要。單元測試
接下來,帶着你們進行源碼的初步瞭解,首先仍然是源碼包功能概述。咱們先看看beans包中的各個源碼包功能:
src/main/java 用於展示spring的主要邏輯
src/main/resources 用於存放系統的配置文件
src/test/java 用於對主要的邏輯進行單元測試
src/test/resources 用於存放測試用的配置文件
介紹完目錄結構,接下來就是spring以後總最核心的兩個類:
1.DefaultListableBeanFactory 類 XmlBeanFactory繼承自DefaultListableBeanFactory,而DefaultListableBeanFactory是整個bean加載的核心部分,是spring註冊及加載bean的默認實現,而對於XmlBeanFactory使用自定義的Xml文件實現了個性化讀取。
2.XmlBeanDefinitionReader 類 Xml配置文件的讀取是spring中重要的功能,由於Spring的大部分功能都是以配置做爲切入點的。