Java開發框架Spring——Spring基礎、Spring體系結構

一、Spring 概述

1、概念

  • Spring 是分層的 Java SE/EE 應用 full-stack 輕量級開源框架,以IoC(Inverse Of Control:反轉控制)和 AOP(Aspect Oriented Programming:面向切面編程)爲內核,提供了展現層 Spring MVC 和持久層 Spring JDBC 以及業務層事務管理等衆多的企業級應用技術,還能整合開源世界衆多著名的第三方框架和類庫

二、Spring 的優勢

  1. 方便解耦,簡化開發
    通過 Spring 提供的 IoC 容器,可以將對象間的依賴關係交由 Spring 進行控制,避免硬編碼所造成的過度程序耦合。用戶也不必再爲單例模式類、屬性文件解析等這些很底層的需求編寫代碼,可以更專注於上層的應用
  2. AOP 編程的支持
    通過 Spring 的 AOP 功能,方便進行面向切面的編程,許多不容易用傳統 OOP 實現的功能可以通過 AOP 輕鬆應付。
  3. 聲明式事務的支持
    可以將我們從單調煩悶的事務管理代碼中解脫出來,通過聲明式方式靈活的進行事務的管理,提高開發效率和質量。
  4. 方便程序的測試
    可以用非容器依賴的編程方式進行幾乎所有的測試工作,測試不再是昂貴的操作,而是隨手可做的事情。
  5. 方便集成各種優秀框架
    Spring 可以降低各種框架的使用難度,提供了對各種優秀框架(Struts、Hibernate、Hessian、Quartz等)的直接支持。
  6. 降低 JavaEE API 的使用難度
    Spring 對 JavaEE API(如 JDBC、JavaMail、遠程調用等)進行了薄薄的封裝層,使這些 API 的使用難度大爲降低。
  7. Java 源碼是經典學習範例
    Spring 的源代碼設計精妙、結構清晰、匠心獨用,處處體現着大師對 Java 設計模式靈活運用以及對 Java 技術的高深造詣。它的源代碼無意是 Java 技術的最佳實踐的範例。

三、Spring 的體系結構

在這裏插入圖片描述
上圖是Spring 5的模塊結構圖,而這些組件被分別整合在覈心容器(Core Container)、AOP(Aspect Oriented Programming)、設備支持(Instrument)、數據訪問及集成(Data Access/Integratioin)、Web、報文發送(Messaging)、Test等模塊。

1、核心容器:由spring-beans, spring-core, spring-context和spring-expression 4個模塊組成。

  1. spring-core:控制反轉IoC(Inversion of Control)與依賴注入DI(Dependency Injection)的基本實現,控制反轉是種設計思想,即將你設計好的對象交給容器控制,而不是傳統的在你的對象內部直接控制。

  2. spring-beans:Bean工廠與bean的裝配,BeanFactory接口使用控制反轉對應用程序的配置、依賴性規範與實際的應用程序代碼進行分離。但是BeanFactory容器實例化後並不會自動實例化Bean,只有當Bean被使用時BeanFactory容器纔會對該Bean進行實例化與依賴關係的裝配。

  3. spring-context:spring的context上下文,即IoC容器,它擴展了BeanFactory,爲它添加了Bean生命週期管理、框架事件體系、資源加載透明化等功能,此外該模塊還提供了很多企業級支持,如遠程訪問、任務調度等。ApplicationContext是該模塊的核心接口,它擴展了BeanFactory,ApplicationContext容器實例化後會自動對所有的單實例Bean進行實例化與依賴關係的裝配,使之處於待用狀態。

  4. spring-expression:spring表達式語言,是統計表達式語言(EL)的擴展模塊,可以查詢、管理運行中的對象,同時也方便的可以調用對象方法、操作數組、集合等。最出色的要數函數調用和簡單字符串的模板函數。

在這裏插入圖片描述

2、AOP和設備支持

  1. spring-aop:面向切面編程,aop就是在某一個類或方法執行前後打個標記,聲明在執行到這裏之前要先執行什麼,執行完這裏之後要接着執行什麼,插入新的執行方法。在Spring中,它是以JVM的動態代理技術爲基礎,然後設計一系列AOP橫切實現,比如前置通知、返回通知、異常通知等,同時Pointcut接口來匹配切入點,可以使用現有切入點來設計橫切面,也可以擴展相關方法根據需求進行切入。
  2. spring-aspects:集成AspectJ, 主要是爲Spring AOOP提供多種AOP實現方法。
  3. spring-instrument:提供一些類級的工具支持和ClassLoader級的實現,用於服務器。該模塊是基於JAVA SE中的“java.lang.instrument”進行設計的,應該算是AOP的一個支援模塊,主要作用是在JVM啓用時,生成一個代理類,程序員通過代理類在運行時修改類的字節,從而改變一個類的實現。

在這裏插入圖片描述
3、數據訪問及集成

  1. spring-jdbc:jdbc的支持,主要是提供JDBC模板方式、關係數據庫對象化方式、SimpleJdbc方式、事務管理來簡化JDBC編程,主要實現類JdbcTemplate、SimpleJdbcTemplate、NamedParameterJdbcTemplate
  2. spring-tx:事務控制,通過它的AOP配置,可以靈活的配置在任何一層,但是在很多的需求和應用,直接使用JDBC事務控制還是有其優勢的。
  3. spring-orm:對象關係映射,集成orm框架,主要集成Hibernate、Java Persistence API(JPA)和Java Data Object(JDO)用於資源管理、數據訪問對象(DAO)的實現和事務策略。
  4. spring-oxm:對象xml映射,OXM是Object to XML Mapping的縮寫,例如:jaxb, castor xmlbeans,JiBx,XStream等。
  5. spring-jms:java消息服務
  6. spring-messaging:爲Spring框架集成一些基礎的報文發送應用。

4、Web

  1. spring-web:提供最基礎的web支持,主要建立在覈心容器上,通過Servlet或者Listener來初始化IOC容器,也包括一些與Web相關的支持。
  2. spring-webmvc:實現了Spring MVC的Web應用
  3. spring-websocket:主要是與Web前端的全雙工通訊協議。
  4. spring-webflux:是一個新的非阻塞式Reactive Web框架,可以用來建立異步、非阻塞、事件驅動的服務,並且擴展性非常好。
    在這裏插入圖片描述
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章