分類:java
java框架學習web
Spring的體系結構編程
Spring是一個開源的輕量級框架設計模式
Spring項目開發流程:服務器
建立項目——>添加必須的類庫jar包——>建立源文件編程調用庫——>建立bean的配置文件——>運行調試數據結構
核心特徵:app
一、AOP:面向切面編程框架
二、IOC:控制反轉,把對象的建立交給Spring管理,依賴注入DI,對象生成放在了XML定義dom
三、跨越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操做:
一、IOC配置文件方式
二、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對象