一.Spring是什么
- Spring是一款主流的Java EE輕量級(體積小、不需要依賴其它組件)開源框架
- Spring的目的是用于簡化Java企業級應用的開發難度和開發周期
- Spring的用途不僅限于服務端的開發,從簡單性、可測試性和松耦合的角度而言,任何Java應用都可以從Spring中受益
- Spring框架除了自己提供功能外,還提供整合其它技術和框架的能力
二、Spring的狹義和廣義
- 廣義上的Spring:Spring技術棧
- 廣義上的Spring,泛指以Spring Framework為核心的Spring技術棧
- 經過十多年的發展,Spring已經不再是一個單純的應用框架,而是逐漸發展成為一個由多個不同的子項目(模塊)組成的成熟技術,例如,Spring Framework、Spring MVC、Spring Boot、Spring Cloud、Spring Data、Spring Security等,其中Spring Framework是其他子項目的基礎
- 狹義上的Spring:Spring Framework
- 狹義的Spring特指Spring Framework,通常我們將它稱為Spring框架
- Spring有兩個最核心模塊:(1)IoC:Inverse if Control,翻譯為“控制反轉”,指把創建對象過程交給Spring進行管理(2)AOP:Aspect Oriented Programming的簡寫,翻譯為“面向切面編程”。AOP用來封裝多個類的公共行為,將那些與業務無關,卻為業務模塊所共用的邏輯封裝起來,減少系統的重復代碼,降低模塊間的耦合度。另外,AOP還解決一些系統層面上的問題,比如:日志、事務、權限等
三、Spring Framework特點
- 非侵入式:使用 Spring Framework 開發應用程序時,Spring 對應用程序本身的結構影響非常小。對領域模型可以做到零污染;對功能性組件也只需要使用幾個簡單的注解進行標記,完全不會破壞原有結構,反而能將組件結構進一步簡化。這就使得基于 Spring Framework 開發應用程序時結構清晰、簡潔優雅
- 控制反轉:IoC——Inversion of Control,翻轉資源獲取方向。把自己創建資源、向環境索取資源變成環境將資源準備好,我們享受資源注入
- 面向切面編程:AOP——Aspect Oriented Programming,在不修改源代碼的基礎上增強代碼功能
- 容器:Spring IoC是一個容器,因為它包含并且管理組件對象的生命周期。組件享受到了容器化的管理,替程序員屏蔽了組件創建過程中的大量細節,極大的降低了使用門檻,大幅度提高了開發效率
- 組件化:Spring實現了使用簡單的組件配置組合成一個復雜的應用。在Spring中可以使用XML和Java注解組合這些對象。這使得我們可以基于一個個功能明確、邊界清晰的組件有條不紊的搭建超大型復雜應用系統
- 一站式:在IoC和AOP的基礎上可以整合各種企業應用的開源框架和優秀的第三方類庫。而且 Spring 旗下的項目已經覆蓋了廣泛領域,很多方面的功能性需求可以在 Spring Framework 的基礎上全部使用 Spring 來實現
四、Spring模塊組成
- 該圖中包含了Spring框架的所有模塊,這些模塊可以滿足一切企業級應用開發的需求,在開發過程中可以根據需要有選擇性地使用所需要的模塊
- Spring Core(核心容器):spring core提供了IOC,DI,Bean配置裝載創建的核心實現。核心概念: Beans、BeanFactory、BeanDefinitions、ApplicationContext
-
spring-core :IOC和DI的基本實現
-
spring-beans:BeanFactory和Bean的裝配管理(BeanFactory)
-
spring-context:Spring context上下文,即IOC容器(AppliactionContext)
-
spring-expression:spring表達式語言
-
- Spring AOP(面向切面編程)
- spring-aop:面向切面編程的應用模塊,整合ASM,CGLib,JDK Proxy
- spring-aspects:集成AspectJ,AOP應用框架
- spring-instrument:動態Class Loading模塊
- Spring Data Access(數據訪問)
- spring-jdbc:spring對JDBC的封裝,用于簡化jdbc操作
- spring-orm:java對象與數據庫數據的映射框架
- spring-oxm:對象與xml文件的映射框架
- spring-jms: Spring對Java Message Service(java消息服務)的封裝,用于服務之間相互通信
- spring-tx:spring jdbc事務管理
- Spring Web(應用程序)
- spring-web:最基礎的web支持,建立于spring-context之上,通過servlet或listener來初始化IOC容器
- spring-webmvc:實現web mvc
- spring-websocket:與前端的全雙工通信協議
- spring-webflux:Spring 5.0提供的,用于取代傳統java servlet,非阻塞式Reactive Web框架,異步,非阻塞,事件驅動的服務
- Spring Message(消息傳遞)
- Spring-messaging:spring 4.0提供的,為Spring集成一些基礎的報文傳送服務
- Spring test(測試)
- spring-test:集成測試支持,主要是對junit的封裝
五、Spring6特點
(1)版本要求
- Spring6要求JDK最低版本是JDK17
(2)本課程軟件版本
- IDEA開發工具:2022.1.2
- JDK:java17
- Spring:6.0.2