spring的簡介

1)什麼是spring?java

答:spring是一個致力於解決企業級開發的一個分層的javaEE的框架,它是以IOC和AOP爲核心,使用基本的JavaBean來完成工做。spring在表現層有springmvc以及struts的框架功能;在業務邏輯層能夠管理事務,記錄日誌等;在持久層能夠整合mybatis或者mybatisplus或者hibernate等技術進行開發。雖然spring貫穿於表現層,業務邏輯層和持久層,可是他並非手替代對原有的框架,而是想要與他們進行整合。web

他的優勢:spring

1:非侵入式入侵:可使應用程序對框架依賴度最小化數據庫

2:方便解耦,簡化開發:spring是一個大型的工廠,能夠將全部的對象的創建和依賴關係的維護都交給spring容器管理,大大下降了組件之間的耦合性。編程

3:支持AOP:spring提供了AOP的支持,容許對事物和日誌進行管理緩存

4:支持聲明式的事物處理:只須要經過配置或者註解就可以完成對事務的管理,而無需手動編程。服務器

5:方便集成各類的優秀的框架:mybatis

6:集成了對jUnit4的測試支持:對測試更好mvc

7:下降了開發難度app

 

2)spring的體系結構

 

 

 1:Core Container(核心容器)

      spring的核模塊是其餘模塊的創建的基礎,他主要由Beans模塊,Core模塊,Context模塊,Context- Context-support 模塊和 SpEL ( Spring Expression Language , Spring 表達式語言)模塊 組成,具體介紹以下。 

     Beans模塊:提供了BeanFactory,是工廠模式的經典體現,spring將管理對象稱爲Bean。

     Core模塊:提供了spring框架的基本組成部分,包括IOC和DI功能。

     Context上下文模塊:創建在core和Beans模塊之上,它是訪問定義和配置的任何對象的媒介。其中ApplicationContext接口是上下文的焦點。

     Context-support 模塊:提供了對第三方庫嵌入 Spring 應用的集成支持,好比緩存 ( EhCache、 Guava、 JCache)、 郵件服務 (JavaMail)、 任務調度( CommonJ、 Quartz) 和模 板引擎( FreeMarker、 JasperReports、 速率)。 • SpEL 模塊:是 Spring 3.0 後新增的模塊,它提供了 Spring Expression Language 支持, 是運行時查詢和操做對象圖的強大的表達式語言。 

2. Data Access/lntegration (戴帽訪問l集成)

數據訪問/集成層包括 JDBC、 ORM 、 OXM、 JMS 和 Transactions 模塊,具體介紹以下。

JDBC 模塊:提供了一個 JDBC 的抽象層,大幅度地減小了在開發過程當中對數據庫操做的 編碼。 .

ORM 模塊:對流行的對象關係映射 API ,包括 JPA、 JDO 和 Hibernate 提供了集成支持。

Transactions 事務模塊:支持對實現特殊接口以及全部 POJO 類的編程和聲明式的事 務管理。 

3.web模塊

Spring 的 Web 層包括 WebSocket、 Servlet、 Web 和 Portlet 模塊,具體介紹以下。

• WebSocket 模塊: Spring 4.0 之後新增的模塊,它提供了 WebSocket 和 SockJS 的實現, 以及對 STOMP 的支持。

• Servlet 模塊:也稱爲 Spring-webmvc 模塊,包含了 Spring 的模型一視圖一控制器(MVC) 和 REST Web Services 實現的 Web 應用程序。

• Web 模塊:提供了基本的 Web 開發集成特性,例如: 多文件上傳功能、 使用 Servlet 監 聽器來初始化 loC 容器以及 Web 應用上下文。

• Portlet 模塊:提供了在 Portlet 環境中使用 MVC 實現,相似 Servlet 模塊的功能。 

4. 其餘模塊 Spring 的其餘模塊還有 AOP、 Aspects、 Instrumentation 以及 Test 模塊,具體介紹以下

• AOP 模塊:提供了面向切面編程實現,容許定義方法攔截器和切入點,將代碼按照功能 進行分離,以下降搞合性。

• Aspects 模塊:提供了與 AspectJ 的集成功能, AspectJ 是一個功能強大且成熟的面向切 面編程 (AOP) 框架。

• Instrumentation 模塊:提供了類工具的支持和類加載器的實現,能夠在特定的應用服務器 中使用。

• Messaging 模塊: Spring 4.0 之後新增的模塊,它提供了對消息傳遞體系結構和協議 的支持。

• Test 模塊:提供了對單元測試和集成測試的支持。

 

3)spring的核心容器:

Spring 框架的主要功能是經過其核心容器來實現的,所以在正式學習 Spring 框架的使用之 前,有必要先對其核心容器有必定的瞭解。Spring 框架提供了兩種核心容器,分別爲 BeanFactory AppIicationContext。 本節中將對這兩種核心容器進行簡單的介紹。

1:BeanFactory:是一個基礎類型的IOC容器(這裏表示控制反轉),他提供了完整的IOC服務的支持。簡單來講,BeanFactory是一個管理Bean的工廠,他主要負責各類初始化Bean,並調用他們的生命週期。

      BeanFactory 接口提供了幾個實現類,其中最經常使用的是 org.springframework. beans factory.xml.XmIBeanFactory ,該類會根據 XML 配置文件中的定義來裝配 Beano 建立 BeanFactory 實例時,須要提供 Spring 所管理容器的詳細配置信息,這些信息一般採 用 XML 文件形式來管理,其加載配置信息的語法以下。


BeanFactory beanFactory = new XmlBeanFactory(new FileSystemResource("F: /applicationContext.xml")) ;

這種加載方式在實際開發中並很少用,讀者瞭解便可。

 

2:ApllicationContext:是BeanFactory的子接口,也被稱爲應用上下文,是另外一種經常使用的spring核心容器。不只包含了BeanFactoy的全部功能,並且還添加了對國際化,資源訪問,事務傳播等方面的支持。

1). 經過 ClassPathXmlApplicationContext 建立 ClassPathXmlAp~licationContext 會從類路徑 classPath 中尋找指定的 XML 配置文件,找
到並裝載完成 ApplicationContext 的實例化工做,其使用語法以下。


ApplicationContext applicationContext = new ClassPathXmlApplicationContext(String configLocation) ;

上述代碼中, configLocation 參數用於指定 Spring 配置文件的名稱和位置。 若是其值爲 "applicationContext.xml" ,貝IJ Spring 會去類路徑中查找名稱爲 applicationContext.xml 的配置 文件。 

2). 經過 FileSystemXmlApplicationContext 建立

FileSystemXmlApplicationContext 會從指定的文件系統路徑(絕對路徑)中尋找指定的 XML 配置文件,找到並裝載完成 ApplicationContext 的實例化工做,其使用語法以下。
ApplicationContext applicationContext = new FileSystemXmlApplicationContext(String configLocation);

與 ClassPathXmlApplicationContext 有所不一樣的是,在讀取 Spring 的配置文件時, FileSystemXmlApplicationContext 再也不從類路徑中讀取配置文件,而是經過參數指定配置文件 的位置,例如 "D:/workspaces/app I icationContext. xm 1"。 若是在參數中寫的不是絕對路徑,那 麼方法調用的時候,會默認用絕對路徑來找。 這種採用絕對路徑的方式,會致使程序的靈活性變 差,因此這個方法通常不推薦使用。 在使用 Spring 框架時,能夠經過實例化其中任何一個類來建立 ApplicationContext 容器。

    一般在 Java 項目中,會採用經過 ClassPathXmlApplicationContext 類來實例化 ApplicationContext 容器的方式,而在 Web 項目中, ApplicationContext 容器的實例化工做會交由 Web 服務器來完成 。 Web 服務器實例化 ApplicationContext 容器時,一般會使用基於 ContextLoaderListener 實現的方式,此種方式只須要在 web.xml 中添加以下代碼。

 

 重點:

BeanFactory 和 ApplicationContext 兩種容器都是經過 XML 配置文件加載 Bean 的。

兩者的主 要區別在於,若是 Bean 的某一個屬性沒有注入,使用 BeanFacotry JJn載後,在第一次調用 getBea()方法時會拋出異常,而 ApplicationContext 則在初始化時自檢,這樣有利於檢查所依賴 屬性是否注入。 所以 ,在實際開發中,一般都優先選擇使用 ApplicationContext ,而只有在系統 資源較少時,才考慮使用 BeanFactory。

 

 

參考書籍:Java EE企業級應用開發教程(Spring+Spring MVC+MyBatis)

相關文章
相關標籤/搜索