Spring框架
Spring 框架是當前 Java 領域應用最廣的框架,它之所以那麼成功,這主要是得益於它的設計理念。它的理念包括 IoC (Inversion of Control,控制反轉) 和 AOP(Aspect Oriented Programming,面向切面編程)。下面我們就來一起學習下 Spring 這個優秀的開源框架。
什麼是 Spring ?
Spring 是分層的 Java SE/EE 應用 full-stack 輕量級開源框架,以 IoC (Inversion of Control,控制反轉) 和 AOP(Aspect Oriented Programming,面向切面編程)爲內核,提供了展現層 Spring MVC 和持久層 Spring JDBC 以及業務層事務管理等衆多的企業級應用技術,還能整合開源世界衆多 著名的第三方框架和類庫,逐漸成爲使用最多的 Java EE 企業應用開源框架。
Spring 的優勢
1.方便解耦,簡化開發
通過Spring提供的IoC容器,我們可以將對象之間的依賴關係交由Spring進行控制,避免硬編碼所造成的過度程序耦合。有了Spring,用戶不必再爲單實例模式類、屬性文件解析等這些很底層的需求編寫代碼,可以更專注於上層的應用。
2.AOP編程的支持
通過Spring提供的AOP功能,方便進行面向切面的編程,許多不容易用傳統OOP實現的功能可以通過AOP輕鬆應付。
3.聲明式事務的支持
在Spring中,我們可以從單調煩悶的事務管理代碼中解脫出來,通過聲明式方式靈活地進行事務的管理,提高開發效率和質量。
4.方便程序的測試
可以用非容器依賴的編程方式進行幾乎所有的測試工作,在Spring裏,測試不再是昂貴的操作,而是隨手可做的事情。例如:Spring對Junit4支持,可以通過註解方便的測試Spring程序。
5.方便集成各種優秀框架
Spring不排斥各種優秀的開源框架,相反,Spring可以降低各種框架的使用難度,Spring提供了對各種優秀框架(如Struts、Mybatis、Hessian、Quartz)等的直接支持。
6.降低Java EE API的使用難度
Spring對很多難用的Java EE API(如JDBC,JavaMail,遠程調用等)提供了一個薄薄的封裝層,通過Spring的簡易封裝,這些Java EE API的使用難度大爲降低。
7.Java 源碼是經典學習範例
Spring的源碼設計精妙、結構清晰、匠心獨運,處處體現着大師對Java設計模式靈活運用以及對Java技術的高深造詣。Spring框架源碼無疑是Java技術的最佳實踐範例。如果想在短時間內迅速提高自己的Java技術水平和應用開發水平,學習和研究Spring源碼將會使你收到意想不到的效果。
Spring 的體系結構
Spring 框架採用分層架構,根據不同的功能被劃分成了多個模塊,這些模塊大體可分爲 Data Access/Integration、Web、AOP、Aspects、Instrumentation、Messaging、Core Container 和 Test 。
1. Data Access/Integration(數據集成/訪問)
-
JDBC 模塊:提供了一個 JDBC 的抽象層,大幅度減少了在開發過程中對數據庫操作的編碼。
-
ORM 模塊:對流行的對象關係映射 API,包括 JPA、JDO、Hibernate 和 iBatis 以及 Mybatis 提供的集成層。
-
OXM 模塊:提供了一個支持對象/XML 映射的抽象層實現,如 JAXB、Castor、XMLBeans、JiBX 和 XStream。
-
JMS 模塊:指 Java 消息服務,包含的功能爲生產和消費的信息。
-
Transactions 事務模塊:支持編程和聲明式事務管理實現特殊接口類。
2. Web
-
WebSocket 模塊:全雙工通信方式,即客戶端和服務器之間的雙向通信。
-
Servlet 模塊:包括 模型—視圖—控制器(MVC) 實現 Web 應用程序。
-
Web 模塊:提供了基本的 Web 開發集成特性。
-
Portlet 模塊:提供了在 Portlet 環境中使用 MVC 實現,類似 Web-Servlet 模塊的功能。
3. Core Container(核心容器)
-
Beans 模塊:提供了 BeanFactory,是工廠模式的經典實現,Spring 將管理對象稱之爲 Bean。
-
Core (核心)模塊:提供了 Spring 框架的基本組成部分,包括 IoC(控制反轉) 和 DI(依賴注入) 功能。
-
Context (上下文)模塊:建立在覈心和 Beans 模塊的基礎之上,它是訪問定義和配置任何對象的媒介。ApplicationContext 接口是上下文模塊的焦點。
-
SpEL 模塊:是運行時查詢和操作對象圖的強大的表達式語言。
4. 其他模塊
-
AOP 模塊:提供了面向切面編程實現,允許定義方法攔截器和切入點,將代碼按照功能進行分離,以降低耦合性。
-
Aspects 模塊:提供與 AspectJ 的集成,是一個功能強大且成熟的面向切面編程(AOP)框架。
-
Instrumentation 模塊:提供了類工具的支持和類加載器的實現,可以在特定的應用服務器中使用。
-
Messaging 模塊:爲集成 messaging api 和消息協議提供支持。
-
Test 模塊:支持使用 JUnit 和 TestNG 對 Spring 組件進行測試。
Spring 的安裝使用
官網:https://spring.io/projects/spring-framework
目前 Spring 的最新版本 5.2.4,推薦大家使用 Maven 開發 Spring 項目,搭建環境只需在 pom.xml 文件導入依賴即可。
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.2.4.RELEASE</version>
</dependency>
PS:覺得對自己有幫助的,歡迎掃下方二維碼點個關注呦。