第?部分 Spring 概述
第1節 Spring 簡介
Spring 是分層的 full-stack(全堆疊) 輕量級開源框架,以 IoC 和 AOP 為內核,提供了展現層 SpringMVC 和業務層事務管理等眾多的企業級應?技術,還能整合開源世界眾多著名的第三?框架和類別庫,已經成為使?最多的 Java EE 企業應?開源框架,
Spring 官??址:http://spring.io/
我們經常說的 Spring 其實指的是Spring Framework(spring 框架),
第2節 Spring 發展歷程
1997年 IBM 提出了EJB的思想;1998年,SUN 制定開發標準規范EJB1.0;
1999年,EJB 1.1發布; 2001年,EJB 2.0發布; 2003年,EJB 2.1發布; 2006年,EJB 3.0發布;
Rod Johnson(spring之?)Expert One-to-One J2EE Design and Development(2002)闡述了J2EE使?EJB開發設計的優點及解決?案Expert One-to-One J2EE Development without EJB(2004) 闡述了J2EE開發不使?EJB的解決?式(Spring雛形)
2017 年 9 ?份發布了 Spring 的最新版本 Spring 5.0 通?版(GA)
第3節 Spring 的優勢
整個 Spring 優勢,傳達出?個信號,Spring 是?個綜合性,且有很強的思想性框架,每學習?天,就能體會到它的?些優勢,
1、?便解耦,簡化開發
通過Spring提供的IoC容器,可以將物件間的依賴關系交由Spring進?控制,避免硬編碼所造成的過度程式耦合,?戶也不必再為單例模式類、屬性?件決議等這些很底層的需求撰寫代碼,可以更專注于上層的應?,
2、AOP編程的?持
通過Spring的AOP功能,?便進??向切?的編程,許多不容易?傳統OOP實作的功能可以通過AOP輕松應付,
宣告式事務的?持
3、@Transactional
可以將我們從單調煩悶的事務管理代碼中解脫出來,通過宣告式?式靈活的進?事務的管理,提?開發效率和質量,
?便程式的測驗
可以??容器依賴的編程?式進??乎所有的測驗?作,測驗不再是昂貴的操作,?是隨?可做的事情,
4、?便集成各種優秀框架
Spring可以降低各種框架的使?難度,提供了對各種優秀框架(Struts、Hibernate、Hessian、Quartz等)的直接?持,
5、降低JavaEE API的使?難度
Spring對JavaEE API(如JDBC、JavaMail、遠程調?等)進?了薄薄的封裝層,使這些API的使?難度?為降低,
6、原始碼是經典的 Java 學習范例
Spring的源代碼設計精妙、結構清晰、匠?獨?,處處體現著?師對Java設計模式靈活運?以及對Java技術的?深造詣,它的源代碼?意是Java技術的最佳實踐的范例,
第4節 Spring 的核?結構
Spring是?個分層?常清晰并且依賴關系、職責定位?常明確的輕量級框架,主要包括?個?模塊:資料處理模塊、Web模塊、AOP(Aspect Oriented Programming)/Aspects模塊、Core Container模塊和 Test 模塊,如下圖所示,Spring依靠這些基本模塊,實作了?個令?愉悅的融合了現有解決?案的零侵?的輕量級框架,

-
Spring核?容器(Core Container) 容器是Spring框架最核?的部分,它管理著Spring應?中bean的創建、配置和管理,在該模塊中,包括了Spring bean??,它為Spring提供了DI的功能,基于bean??,我們還會發現有多種Spring應?上下?的實作,所有的Spring模塊都構建于核?容器之上,
-
?向切?編程(AOP)/Aspects Spring對?向切?編程提供了豐富的?持,這個模塊是Spring應?系統中開發切?的基礎,與DI?樣,AOP可以幫助應?物件解耦,
-
資料訪問與集成(Data Access/Integration)
Spring的JDBC和DAO模塊封裝了?量樣板代碼,這樣可以使得資料庫代碼變得簡潔,也可以更專注于我們的業務,還可以避免資料庫資源釋放失敗?引起的問題,另外,Spring AOP為資料訪問提供了事務管理服務,同時Spring還對ORM進?了集成,如Hibernate、MyBatis等,該模塊由JDBC、Transactions、ORM、OXM 和 JMS 等模塊組成,
-
Web 該模塊提供了SpringMVC框架給Web應?,還提供了多種構建和其它應?互動的遠程調??案,SpringMVC框架在Web層提升了應?的松耦合?平,
-
Test 為了使得開發者能夠很?便的進?測驗,Spring提供了測驗模塊以致?于Spring應?的測驗,通過該模塊,Spring為使?Servlet、JNDI等撰寫單元測驗提供了?系列的mock物件實作,
第5節 Spring 框架版本

Spring Framework不同版本對 Jdk 的要求

JDK 11.0.5
IDE idea 2019
Maven 3.6.x
第?部分 核?思想
注意:IOC和AOP不是spring提出的,在spring之前就已經存在,只不過更偏向于理論化,spring在技術層次把這兩個思想做了?常好的實作(Java)
第1節 IoC
1.1 什么是IoC?
1、IoC Inversion of Control (控制反轉/反轉控制),注意它是?個技術思想,不是?個技術實作描述的事情:Java開發領域物件的創建,管理的問題
2、傳統開發?式:?如類A依賴于類B,往往會在類A中new?個B的物件
3、IoC思想下開發?式:我們不???去new物件了,?是由IoC容器(Spring框架)去幫助我們實體化物件并且管理它,我們需要使?哪個物件,去問IoC容器要即可
4、我們喪失了?個權利(創建、管理物件的權利),得到了?個福利(不?考慮物件的創建、管理等?系列事情)
5、為什么叫做控制反轉?控制:指的是物件創建(實體化、管理)的權利反轉:控制權交給外部環境了(spring框架、IoC容器)

1.2 IoC解決了什么問題
IoC解決物件之間的耦合問題

1.3 IoC和DI的區別
DI:Dependancy Injection(依賴注?)
怎么理解:
IOC和DI描述的是同?件事情,只不過?度不?樣罷了

第2節 AOP
2.1 什么是AOP
AOP: Aspect oriented Programming ?向切?編程/?向??編程
AOP是OOP的延續,從OOP說起
OOP三?特征:封裝、繼承和多型
oop是?種垂直繼承體系

OOP編程思想可以解決?多數的代碼重復問題,但是有?些情況是處理不了的,?如下?的在頂級?類Animal中的多個?法中相同位置出現了重復代碼,OOP就解決不了

橫切邏輯代碼

橫切邏輯代碼存在什么問題:
橫切代碼重復問題
橫切邏輯代碼和業務代碼混雜在?起,代碼臃腫,維護不?便AOP出場,AOP獨辟蹊徑提出橫向抽取機制,將橫切邏輯代碼和業務邏輯代碼分析

代碼拆分容易,那么如何在不改變原有業務邏輯的情況下,悄?聲息的把橫切邏輯代碼應?到原有的業務邏輯中,達到和原來?樣的效果,這個是?較難的
2.2 AOP
在解決什么問題在不改變原有業務邏輯情況下,增強橫切邏輯代碼,根本上解耦合,避免橫切邏輯代碼重復
2.3 為什么叫做?向切?編程
「切」:指的是橫切邏輯,原有業務邏輯代碼我們不能動,只能操作橫切邏輯代碼,所以?向橫切邏輯
「?」:橫切邏輯代碼往往要影響的是很多個?法,每?個?法都如同?個點,多個點構成?,有?個?的概念在??
以上文章只是Spring高級原始碼中的一部分,需要的可以點擊這里!!暗號博客園獲取!獲取完整版的《Spring高級原始碼》!
如果本文對你有幫助,別忘記來個三連:點贊,轉發,評論,咱們下期見!
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/222879.html
標籤:Java
