解析Spring核心技術(shù)IoC、AOP
Spring是一個(gè)開放源代碼的設(shè)計(jì)層面框架,他解決的是業(yè)務(wù)邏輯層和其他各層的松耦合問題,因此它將面向接口的編程思想貫穿整個(gè)系統(tǒng)應(yīng)用。
本文章將深入淺出講解Spring的核心技術(shù)IoC、AOP,剖析框架的源代碼。讓大家快速掌握框架的原理和應(yīng)用。
Spring 框架是什么?
Spring 是于 2003 年興起的一個(gè)輕量級(jí)的Java 開發(fā)框架,它是為了解決企業(yè)應(yīng)用開發(fā)的復(fù)雜性而創(chuàng)建的。Spring 的核心是控制反轉(zhuǎn)(IoC)和面向切面編程(AOP)。Spring 是可以在Java SE/E中使用的輕量級(jí)開源框架。
Spring 的主要作用就是為代碼“解耦”,降低代碼間的耦合度。就是讓對(duì)象和對(duì)象(模塊和模塊)之間關(guān)系不是使用代碼關(guān)聯(lián),而是通過配置來(lái)說明。即在 Spring 中說明對(duì)象(模塊)的關(guān)系。
Spring 根據(jù)代碼的功能特點(diǎn),使用Ioc 降低業(yè)務(wù)對(duì)象之間耦合度。IoC 使得主業(yè)務(wù)在相互調(diào)用過程中,不用再自己維護(hù)關(guān)系了,即不用再自己創(chuàng)建要使用的對(duì)象了。而是由 Spring 容器統(tǒng)一管理,自動(dòng)“注入”,注入即賦值。 而AOP 使得系統(tǒng)級(jí)服務(wù)得到了最大復(fù)用,且不用再由程序員手工將系統(tǒng)級(jí)服務(wù)“混雜”到主業(yè)務(wù)邏輯中了,而是由 Spring 容器統(tǒng)一完成“織入”。
Spring的優(yōu)點(diǎn)?
Spring 是一個(gè)框架,是一個(gè)半成品的軟件。有 20 個(gè)模塊組成。它是一個(gè)容器管理對(duì)象,容器是裝東西的,Spring 容器不裝文本,數(shù)字。裝的是對(duì)象。Spring 是存儲(chǔ)對(duì)象的容器。
(1) 輕量
Spring 框架使用的jar 都比較小,一般在 1M 以下或者幾百 kb。Spring 核心功能的所需的jar 總共在 3M 左右。
Spring 框架運(yùn)行占用的資源少,運(yùn)行效率高。不依賴其他jar
(2) 針對(duì)接口編程,解耦合
Spring 提供了Ioc 控制反轉(zhuǎn),由容器管理對(duì)象,對(duì)象的依賴關(guān)系。原來(lái)在程序代碼中的對(duì)象創(chuàng)建方式,現(xiàn)在由容器完成。對(duì)象之間的依賴解耦合。
(3) AOP 編程的支持
通過 Spring 提供的 AOP 功能,方便進(jìn)行面向切面的編程,許多不容易用傳統(tǒng)OOP 實(shí)現(xiàn)的功能可以通過AOP 輕松應(yīng)付在 Spring 中,開發(fā)人員可以從繁雜的事務(wù)管理代碼中解脫出來(lái),通過聲明式方式靈活地進(jìn)行事務(wù)的管理,提高開發(fā)效率和質(zhì)量。
(4) 方便集成各種優(yōu)秀框架
Spring 不排斥各種優(yōu)秀的開源框架,相反 Spring 可以降低各種框架的使用難度,Spring 提供了對(duì)各種優(yōu)秀框架(如Struts,Hibernate、MyBatis)等的直接支持。簡(jiǎn)化框架的使用。
Spring 像插線板一樣,其他框架是插頭,可以容易的組合到一起。需要使用哪個(gè)框架,就把這個(gè)插頭放入插線板。不需要可以輕易的移除。
Spring 體系結(jié)構(gòu)
Spring 由 20 多個(gè)模塊組成,它們可以分為數(shù)據(jù)訪問/集成(Data Access/Integration)、Web、面向切面編程(AOP, Aspects)、提供JVM 的代理(Instrumentation)、消息發(fā)送(Messaging)、核心容器(Core Container)和測(cè)試(Test)。
IoC 控制反轉(zhuǎn)
控制反轉(zhuǎn)(IoC,Inversion of Control),是一個(gè)概念,是一種思想。指將傳統(tǒng)上由程序代碼直接操控的對(duì)象調(diào)用權(quán)交給容器,通過容器來(lái)實(shí)現(xiàn)對(duì)象的裝配和管理?刂品崔D(zhuǎn)就是對(duì)對(duì)象控制權(quán)的轉(zhuǎn)移,從程序代碼本身反轉(zhuǎn)到了外部容器。通過容器實(shí)現(xiàn)對(duì)象的創(chuàng)建,屬性賦值,依賴的管理。
IoC 是一個(gè)概念,是一種思想,其實(shí)現(xiàn)方式多種多樣。當(dāng)前比較流行的實(shí)現(xiàn)方式是依賴注入。應(yīng)用廣泛。
依賴:classA 類中含有classB 的實(shí)例,在 classA 中調(diào)用classB 的方法完成功能,即 classA 對(duì) classB 有依賴。
Ioc 的實(shí)現(xiàn):
依賴注入:DI(Dependency Injection),程序代碼不做定位查詢,這些工作由容器自行完成。
依賴注入 DI 是指程序運(yùn)行過程中,若需要調(diào)用另一個(gè)對(duì)象協(xié)助時(shí),無(wú)須在代碼中創(chuàng)建被調(diào)用者,而是依賴于外部容器,由外部容器創(chuàng)建后傳遞給程序。 Spring 的依賴注入對(duì)調(diào)用者與被調(diào)用者幾乎沒有任何要求,完全支持對(duì)象之間依賴關(guān)系的管理。
Spring 框架使用依賴注入(DI)實(shí)現(xiàn)IoC。
Spring 容器是一個(gè)超級(jí)大工廠,負(fù)責(zé)創(chuàng)建、管理所有的Java 對(duì)象,這些Java 對(duì)象被稱為Bean。Spring 容器管理著容器中Bean 之間的依賴關(guān)系, Spring 使用“依賴注入”的方式來(lái)管理Bean 之間的依賴關(guān)系。使用IoC 實(shí)現(xiàn)對(duì)象之間的解耦和。
開發(fā)工具準(zhǔn)備
開發(fā)工具:idea2017 以上依賴管理:maven3 以上jdk:1.8 以上
需要設(shè)置maven 本機(jī)倉(cāng)庫(kù):
Spring 的第一個(gè)程序
舉例:01-primay
創(chuàng)建maven 項(xiàng)目
引入maven 依賴 pom.xml
定義接口與實(shí)體類

發(fā)表評(píng)論
請(qǐng)輸入評(píng)論內(nèi)容...
請(qǐng)輸入評(píng)論/評(píng)論長(zhǎng)度6~500個(gè)字
圖片新聞
-
機(jī)器人奧運(yùn)會(huì)戰(zhàn)報(bào):宇樹機(jī)器人摘下首金,天工Ultra搶走首位“百米飛人”
-
存儲(chǔ)圈掐架!江波龍起訴佰維,索賠121萬(wàn)
-
長(zhǎng)安汽車母公司突然更名:從“中國(guó)長(zhǎng)安”到“辰致科技”
-
豆包前負(fù)責(zé)人喬木出軌BP后續(xù):均被辭退
-
字節(jié)AI Lab負(fù)責(zé)人李航卸任后返聘,Seed進(jìn)入調(diào)整期
-
員工持股爆雷?廣汽埃安緊急回應(yīng)
-
中國(guó)“智造”背后的「關(guān)鍵力量」
-
小米汽車研發(fā)中心重磅落地,寶馬家門口“搶人”
最新活動(dòng)更多
-
即日-9.1立即下載>> 【限時(shí)下載】ADI中國(guó)三十周年感恩回饋助力企業(yè)升級(jí)!
-
即日-9.16點(diǎn)擊進(jìn)入 >> 【限時(shí)福利】TE 2025國(guó)際物聯(lián)網(wǎng)展·深圳站
-
10月23日立即報(bào)名>> Works With 開發(fā)者大會(huì)深圳站
-
10月24日立即參評(píng)>> 【評(píng)選】維科杯·OFweek 2025(第十屆)物聯(lián)網(wǎng)行業(yè)年度評(píng)選
-
11月27日立即報(bào)名>> 【工程師系列】汽車電子技術(shù)在線大會(huì)
-
12月18日立即報(bào)名>> 【線下會(huì)議】OFweek 2025(第十屆)物聯(lián)網(wǎng)產(chǎn)業(yè)大會(huì)
推薦專題
- 1 阿里首位程序員,“掃地僧”多隆已離職
- 2 先進(jìn)算力新選擇 | 2025華為算力場(chǎng)景發(fā)布會(huì)暨北京xPN伙伴大會(huì)成功舉辦
- 3 宇樹機(jī)器人撞人事件的深度剖析:六維力傳感器如何成為人機(jī)安全的關(guān)鍵屏障
- 4 清華跑出具身智能獨(dú)角獸:給機(jī)器人安上眼睛和大腦,融資近20億
- 5 特朗普要求英特爾首位華人 CEO 辭職
- 6 踢館大廠和微軟,剖析WPS靈犀的AI實(shí)用主義
- 7 騰訊 Q2 財(cái)報(bào)亮眼:AI 已成第二增長(zhǎng)曲線
- 8 谷歌吹響AI沖鋒號(hào),AI還有哪些機(jī)會(huì)
- 9 蘋果把身家押在Siri上:一場(chǎng)輸不起的自我革命
- 10 共探合作新機(jī)遇!江門市新會(huì)區(qū)(深圳)“AI + 機(jī)器人” 產(chǎn)業(yè)對(duì)接會(huì)成功舉辦