前言
小伙伴們大家好,我是陳橘又青,今天起 《Spring進(jìn)階系列》 開始更新。本專欄將涵蓋Spring框架的核心概念、配置管理、Web開發(fā)、AOP、Boot、Security、Data、Integration和Batch等多個(gè)主題。通過理論講解和實(shí)際案例的剖析,幫助讀者深入理解Spring框架的原理和應(yīng)用技巧,提升開發(fā)人員的技能水平。無論您是初學(xué)者還是有一定經(jīng)驗(yàn)的開發(fā)者,都能在本專欄中找到有價(jià)值的內(nèi)容。點(diǎn)此免費(fèi)訂閱,一起探索Spring框架的奧秘,提升您的開發(fā)能力!
一、Spring框架概述
Spring是什么?
Spring 是分層的 Java SE/EE 應(yīng)用 full-stack【全棧式】 輕量級(jí)開源框架,以 IoC(Inverse Of Control:反轉(zhuǎn)控制)和 AOP(Aspect Oriented Programming:面向切面編程)為核心,提供了展現(xiàn)層 Spring MVC 和持久層 Spring JDBC 以及業(yè)務(wù)層事務(wù)管理等眾多的企業(yè)級(jí)應(yīng)用技術(shù),還能整合開源世界眾多著名的第三方框架和類庫,逐漸成為使用最多的 Java EE 企業(yè)應(yīng)用開源框架。
Spring倡導(dǎo)以 “最少侵入” 的方式來管理應(yīng)用中的代碼,這意味著我們可以隨時(shí)安裝或者卸載 Spring。這里的"最少侵入"可以理解為:我們的項(xiàng)目中所使用的類無需繼承框架提供的任何類,這樣我們?cè)诟鼡Q框架時(shí),之前寫過的代碼幾乎可以繼續(xù)使用。
輕量級(jí):輕量級(jí)是相對(duì)于重量級(jí)而言的,輕量級(jí)一般就是非入侵性的、所依賴的東西非常少、資源占用非常少、部署簡(jiǎn)單等等,其實(shí)就是比較容易使用,而重量級(jí)正好相反 。
二、Spring的優(yōu)勢(shì)
-
方便解耦,簡(jiǎn)化開發(fā)
? 通過 Spring 提供的 IoC 容器,可以將==對(duì)象間的依賴關(guān)系交由 Spring 進(jìn)行控制==,避免硬編碼所造成的過度程序耦合。用戶也不必再為單例模式類、屬性文件解析等這些很底層的需求編寫代碼,可以更專注于上層的應(yīng)用。
-
AOP 編程的支持
? 通過 Spring 的 AOP 功能,方便進(jìn)行面向切面的編程,許多不容易用傳統(tǒng) OOP 實(shí)現(xiàn)的功能可以通過 AOP 輕松應(yīng)付。
-
聲明式事務(wù)的支持
? 可以將我們從單調(diào)煩悶的事務(wù)管理代碼中解脫出來,通過聲明式方式靈活的進(jìn)行事務(wù)的管理,提高開發(fā)效率和質(zhì)量。
-
方便程序的測(cè)試
? 可以用非容器依賴的編程方式進(jìn)行幾乎所有的測(cè)試工作,測(cè)試不再是麻煩的操作,而是隨手可做的事情。
-
方便集成各種優(yōu)秀框架
? Spring 可以降低各種框架的使用難度,提供了對(duì)各種優(yōu)秀框架(Struts、Hibernate、SpringMVC、MyBatis等)的直接支持。
-
降低 JavaEE API 的使用難度
? Spring 對(duì) JavaEE API(如 JDBC、JavaMail、遠(yuǎn)程調(diào)用等)進(jìn)行了薄薄的封裝層,使這些 API 的使用難度大為降低。
-
Spring 框架中包括了 J2EE 三層的每一層的解決方案(一站式)
-
Java 源碼是經(jīng)典學(xué)習(xí)范例
? Spring 的源代碼設(shè)計(jì)精妙、結(jié)構(gòu)清晰、匠心獨(dú)用,處處體現(xiàn)著大師對(duì) Java 設(shè)計(jì)模式靈活運(yùn)用以及對(duì) Java 技術(shù)的高深造詣。它的源代碼無意是 Java 技術(shù)的最佳實(shí)踐的范例。
三、Spring能幫助我們做什么
- Spring 能幫我們根據(jù)配置文件創(chuàng)建及組裝對(duì)象之間的依賴關(guān)系
- Spring 面向切面編程能幫助我們無耦合的實(shí)現(xiàn)日志記錄,性能統(tǒng)計(jì),安全控制。
- Spring 能非常簡(jiǎn)單的幫我們管理數(shù)據(jù)庫事務(wù)。
- Spring 還提供了與第三方數(shù)據(jù)訪問框架(如Hibernate、JPA)無縫集成,而且自己也提供了一套JDBC訪問模板來方便數(shù)據(jù)庫訪問。
- Spring 還提供與第三方Web(如Struts1/2、JSF)框架無縫集成,而且自己也提供了一套Spring MVC框架,來方便web層搭建。
- Spring 能方便的與Java EE(如Java Mail、任務(wù)調(diào)度)整合,與更多技術(shù)整合(比如緩存框架)。
四、Spring體系結(jié)構(gòu)
Spring框架的體系結(jié)構(gòu)通過分層的方式,將各種功能模塊化,使得開發(fā)者可以根據(jù)需要選擇和使用不同的模塊,同時(shí)也使得框架本身更具有靈活性和可擴(kuò)展性。
Spring框架的體系結(jié)構(gòu)采用了分層的理念,根據(jù)功能的不同劃分成了多個(gè)模塊。這些模塊大體可分為Data Access/Integration(數(shù)據(jù)訪問與集成)
、Web
、AOP(面向切面編程
)、Aspects
、Instrumentation(檢測(cè)
)、Messaging(消息處理)
、Core Container(核心容器)
和Test
。
核心容器的主要組件是BeanFactory,它是工廠模式的實(shí)現(xiàn)。Spring上下文是一個(gè)配置文件,向Spring框架提供上下文信息。此外,Spring框架中還有許多其他模塊,例如Spring AOP模塊直接將面向方面的編程功能集成到了Spring框架中,而Spring DAO JDBC DAO抽象層提供了有意義的異常層次結(jié)構(gòu),用于管理異常處理和不同數(shù)據(jù)庫供應(yīng)商拋出的錯(cuò)誤消息。Spring ORM提供了ORM的對(duì)象關(guān)系工具,其中包括JPA、JDO、Hibernate和MyBatis等。Spring Web模塊建立在應(yīng)用程序上下文模塊之上,為基于Web的應(yīng)用程序提供了上下文,而Spring MVC框架則是一個(gè)全功能的構(gòu)建Web應(yīng)用程序的MVC實(shí)現(xiàn)。
核心容器有spring-core、spring-beans、spring-context、spring-context-support、spring-experssion(SpEL、spring表達(dá)式語言、spring expression language)等。
- spring-core:提供了框架的基本組成部分,包括IoC和依賴注入。
- spring-beans:提供BeanFactory,工廠模式的微妙實(shí)現(xiàn),它移除了編碼式單例的需要,并且可以把編碼和依賴從實(shí)際編碼邏輯中解耦。
- context:建立在core和beans模塊基礎(chǔ)上,它是一種類似JNDI的注冊(cè)方式訪問對(duì)象。Context繼承自Bean,并添加了國際化事件傳播、資源加載和透明的創(chuàng)建上下文等功能。Context模塊也支持javaee功能。applicationcontext接口是context模塊的焦點(diǎn)。spring-context-support提供了第三方集成到spring上下文的支持,如:緩存(Ehcache、Jcache、Guava)、郵件(javamail)、調(diào)度(commonJ、quartz)、模版引擎(freemarker、JasperReports)等
- spring-expression:提供了強(qiáng)大的表達(dá)式語言,用于在運(yùn)行時(shí)查詢和操作圖,它是JSP2.1中規(guī)定的統(tǒng)一表達(dá)式語言的擴(kuò)展,支持get和set屬性值、方法調(diào)用、訪問數(shù)組集合及索引內(nèi)容、邏輯算術(shù)運(yùn)算、命名變量、通過名字對(duì)Spring IoC容器進(jìn)行檢索,支持列表的投影、選擇及聚合等。
它們的依賴關(guān)系如下:
五、Spring的官網(wǎng)
在Spring官網(wǎng),開發(fā)者們可以獲取到以下信息:
- 各種關(guān)于Spring框架的詳細(xì)介紹和文檔。
包括各種Spring項(xiàng)目的信息(如Spring Boot、Spring、Spring Cloud等),以及如何搭建REST風(fēng)格的web service和使用JPA等。
- Spring各個(gè)版本的下載地址,包括jar包的鏈接和說明。
- Spring的培訓(xùn)及證書認(rèn)證信息。
此外,在首頁上還會(huì)展示一些當(dāng)前Spring比較流行的技術(shù),幫助用戶學(xué)習(xí)和使用Spring框架。
六、Spring的使命/理念
Spring的使命是解決企業(yè)級(jí)應(yīng)用開發(fā)的復(fù)雜性,簡(jiǎn)化Java開發(fā)。它的設(shè)計(jì)目標(biāo)是提供一個(gè)一站式輕量級(jí)應(yīng)用開發(fā)平臺(tái)。
Spring的設(shè)計(jì)理念是在JavaEE開發(fā)中,支持POJO和JavaBean開發(fā)方式,使應(yīng)用面向接口開發(fā),充分支持OO(面向?qū)ο螅┰O(shè)計(jì)方法。它通過IOC容器實(shí)現(xiàn)對(duì)象耦合關(guān)系的管理,并實(shí)現(xiàn)依賴反轉(zhuǎn),將對(duì)象之間的依賴關(guān)系交給IOC容器,實(shí)現(xiàn)解耦。
這些理念和目標(biāo)使Spring成為Java開發(fā)中重要的框架之一,幫助開發(fā)者提高開發(fā)效率,降低維護(hù)成本,提高代碼的可維護(hù)性和可重用性。
總結(jié):簡(jiǎn)化Java應(yīng)用程序開發(fā)
《Spring進(jìn)階系列》 專欄歡迎訂閱,我們下篇見~文章來源:http://www.zghlxwxcb.cn/news/detail-752156.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-752156.html
到了這里,關(guān)于【Spring進(jìn)階系列丨第一篇】初識(shí)Spring開發(fā)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!