java框架學習之路——Spring的體系結構
分類:
java框架學習
Spring的體系結構
Spring是一個開源的輕量級框架
Spring項目開發流程:
創建項目——>添加必須的類庫jar包——>創建源文件編程調用庫——>創建bean的配置文件——>運行調試
核心特征:
1、AOP:面向切面編程
2、IOC:控制反轉,把對象的創建交給Spring管理,依賴註入DI,對象生成放在了XML定義
3、跨越javaEE三層
Web層:SpringMVC
Service層:Spring IOC
Dao層:jdbcTemplate
如上圖,Spring 框架的模塊分為核心容器(Core Container)、數據訪問集成(DataAccess/Integration)、Web(MVC/Remoting)和其他模塊四類、共約 20 個模塊
核心容器
核心容器,即圖裏的最下面四個模塊,分別是核心,Bean,上下文和表達式語言模塊,其中
核心模塊提供了框架的基本組成部分,包括 IoC 和依賴註入功能。
Bean 模塊提供 BeanFactory,它是一個工廠模式的復雜實現。
上下文模塊建立在由核心和 Bean 模塊提供的堅實基礎上,它是訪問定義和配置的任何對象的媒介。ApplicationContext 接口是上下文模塊的重點。
表達式語言模塊在運行時提供了查詢和操作一個對象圖的強大的表達式語言。
數據訪問/集成
數據訪問/集成層包括 JDBC,ORM,OXM,JMS 和事務處理模塊,其中:
JDBC 模塊提供了刪除冗余的 JDBC 相關編碼的 JDBC 抽象層。
ORM 模塊為流行的對象關系映射 API,包括 JPA,JDO,Hibernate 和 iBatis,提供了集成層。
OXM 模塊提供了抽象層,它支持對 JAXB,Castor,XMLBeans,JiBX 和 XStream的對象/XML 映射實現。
Java 消息服務 JMS 模塊包含生產和消費的信息的功能。
事務模塊為實現特殊接口的類及所有的 POJO 支持編程式和聲明式事務管理。
Web
Web 層由 Web,Web-MVC,Web-Socket 和 Web-Portlet 組成,其中:
Web 模塊提供了基本的面向 web 的集成功能,例如多個文件上傳的功能和使用 , servlet 監聽器和面向 web 應用程序的上下文來初始化 IoC 容器。
Web-MVC 模塊包含 Spring 的模型-視圖-控制器(MVC),實現了 web 應用程序。
Web-Socket 模塊為 WebSocket-based 提供了支持,而且在 web 應用程序中提供了客戶端和服務器端之間通信的兩種方式。
Web-Portlet 模塊提供了在 portlet 環境中實現 MVC,並且反映了 Web-Servlet 模塊的功能。
其他模塊
還有其他一些重要的模塊,像 AOP,Aspects,Instrumentation,Web 和測試模塊,其中,
AOP 模塊提供了面向方面的編程實現,允許你定義方法攔截器和切入點對代碼進行幹凈地解耦,它實現了應該分離的功能。
Aspects 模塊提供了與 AspectJ 的集成,這是一個功能強大且成熟的面向切面編程(AOP)框架。
Instrumentation 模塊在一定的應用服務器中提供了類 instrumentation 的支持和類加載器的實現。
Messaging 模塊為 STOMP 提供了支持作為在應用程序中 WebSocket 子協議的使用。它也支持一個註解編程模型,它是為了選路和處理來自 WebSocket 客戶端的STOMP 信息。
測試模塊支持對具有 JUnit 或 TestNG 框架的 Spring 組件的測試。
Spring IOC容器:
分為Spring BeanFactory容器和Spring ApplicationContext容器
ApplicationContext 容器包括 BeanFactory 容器的所有功能,所以通常建議超過 BeanFactory。BeanFactory 仍然可以用於輕量級的應用程序,如移動設備或基於 applet 的應用程序,其中它的數據量和速度是顯著。
Spring IOC容器是 Spring 框架的核心。容器將創建對象,把它們連接在一起,配置它們,並管理他們的整個生命周期從創建到銷毀。Spring 容器使用依賴註入(DI)來管理組成一個應用程序的組件。這些對象被稱為 Spring Beans
Bean容器組件,整個IoC容器核心,所謂Bean容器,就是這裏裝著Bean對象以及所需要的各種數據。其中BeanFactory是純粹的Bean容器,用來存儲描述Bean,無關其他環境,而像ApplicationContext,也是Bean容器,但它和應用環境息息相關,所以被稱為應用上下文(環境)更恰當,ApplicationContext不僅有著eanFactory“血統”,同時也繼承了EnvironmentCapable、MessageSource、ApplicationEventPublisher,即擴展了其許多額外功能,而其實現類則是和具體應用相關了
IOC容器底層原理:
(1)、xml配置文件
(2)、dom4j解決xml
(3)、工廠設計模式
(4)、反射
IOC操作:
1、IOC配置文件方式
2、IOC的註解方式
整個工作流程:
ApplicationContext context = new ClassPathXmlApplicationContext(path);
0.新建ApplicationContext容器對象(並沒有初始化);
1.ResourceLoader加載並解析資源文件 ———> 獲得Resource對象;
2.BeanDefinitionReader讀取Resource對象,將其讀到的bean元素數據封裝到
BeanDefinition組件中;
3.BeanDefinitionRegister將所有的BeanDefinition註冊到BeanFactory中
(BeanDefinition是容器內部Bean的基本數據結構,BeanFactory維持著一個
BeanDefinition Map);
4.容器初始化開始,容器初始化工作由AbstractApplicationContext提供的
refresh()方法完成
***context作為應用環境上下文功能完成,程序此後就可以通過context的geBean
(String beanName)方法獲得path文件聲明定義的bean對象
java框架學習之路——Spring的體系結構