關(guān)于Spring總結(jié)(必看篇)
Spring引入
傳統(tǒng)的基于mvc的項(xiàng)目框架結(jié)構(gòu):Entity / dao / service / action
簡(jiǎn)單用戶訪問(wèn)流程:/user.action ----> Tomcat (服務(wù)器創(chuàng)建Action、Service、dao
引出思考:
1. 對(duì)象創(chuàng)建創(chuàng)建能否寫(xiě)死?
2. 對(duì)象創(chuàng)建細(xì)節(jié)
對(duì)象數(shù)量
action 多個(gè) 【維護(hù)成員變量】
service 一個(gè) 【不需要維護(hù)公共變量】
dao 一個(gè) 【不需要維護(hù)公共變量】
創(chuàng)建時(shí)間
action 訪問(wèn)時(shí)候創(chuàng)建
service 啟動(dòng)時(shí)候創(chuàng)建
dao 啟動(dòng)時(shí)候創(chuàng)建
3. 對(duì)象的依賴關(guān)系
action 依賴 service
service依賴 dao
總結(jié):Spring就是解決上面的問(wèn)題的.簡(jiǎn)單來(lái)說(shuō),就是處理對(duì)象的創(chuàng)建的、以及對(duì)象的依賴關(guān)系,降低組件之間的耦合度,實(shí)現(xiàn)軟件各層之間的解耦。
Spring介紹
•Spring是什么?
Spring是一個(gè)非常活躍的開(kāi)源框架, 它是一個(gè)基于IOC和AOP來(lái)構(gòu)架多層JavaEE系統(tǒng)的框架,它的主要目地是簡(jiǎn)化企業(yè)開(kāi)發(fā),Spring以一種非侵入式的方式來(lái)管理你的代碼, Spring提倡”最少侵入”,這也就意味著你可以適當(dāng)?shù)臅r(shí)候安裝或卸載Spring。
•具體描述Spring
1.輕量級(jí):Spring 是非侵入性的>基于 Spring 開(kāi)發(fā)的應(yīng)用中的對(duì)象可以不依賴于 Spring 的 API,基礎(chǔ)版本的Spring框架大約只有2MB.
組件/框架設(shè)計(jì) 侵入式設(shè)計(jì) 引入了框架,對(duì)現(xiàn)有的類的結(jié)構(gòu)有影響;即需要實(shí)現(xiàn)或繼承某些特定類。 例如: Struts框架 非侵入式設(shè)計(jì) 引入了框架,對(duì)現(xiàn)有的類結(jié)構(gòu)沒(méi)有影響。 例如:Hibernate框架 / Spring框架
2.依賴注入(DI --- dependency injection、IOC)
Spring使用控制反轉(zhuǎn)技術(shù)實(shí)現(xiàn)了松耦合。依賴被注入到對(duì)象,而不是創(chuàng)建或?qū)ふ乙蕾噷?duì)象。 a、IOC Inversion on Control , 控制反轉(zhuǎn) 其思想是反轉(zhuǎn)資源獲取的方向. 傳統(tǒng)的資源查找方式要求組件向容器發(fā)起請(qǐng)求查找資源. 作為回應(yīng), 容器適時(shí)的返回資源. 而應(yīng)用了 IOC 之后, 則是容器主動(dòng)地將資源推送給它所管理的組件, 組件所要做的僅是選擇一種合適的方式來(lái)接受資源. 這種行為也被稱為查找的被動(dòng)形式。可以簡(jiǎn)單的理解為對(duì)象的創(chuàng)建交給外部容器完成,這個(gè)就叫做控制反轉(zhuǎn). b、依賴注入, dependency injection IOC 的另一種表述方式:即組件以一些預(yù)先定義好的方式(例如: setter 方法)接受來(lái)自如容器的資源注入. 相對(duì)于 IOC 而言,這種表述更直接。 兩者區(qū)別: 控制反轉(zhuǎn): 解決對(duì)象創(chuàng)建的問(wèn)題 【對(duì)象創(chuàng)建交給別人】 依賴注入: 在創(chuàng)建完對(duì)象后,對(duì)象的關(guān)系的處理就是依賴注入 【通過(guò)set方法依賴注入】
3.面向切面編程(AOP --- aspect oriented programming)
a、采用了面向切面編程來(lái)實(shí)現(xiàn)很多基礎(chǔ)但是與業(yè)務(wù)邏輯無(wú)關(guān)的功能的解耦,比如:事務(wù)管理、日志、權(quán)限驗(yàn)證等。 b、AOP 的主要編程對(duì)象是切面(aspect), 而切面模塊化橫切關(guān)注點(diǎn). c、在應(yīng)用 AOP 編程時(shí), 仍然需要定義公共功能, 但可以明確的定義這個(gè)功能在哪里, 以什么方式應(yīng)用, 并且不必修改受影響的類. 這樣一來(lái)橫切關(guān)注點(diǎn)就被模塊化到特殊的對(duì)象(切面)里. 關(guān)注點(diǎn): 重復(fù)代碼就叫做關(guān)注點(diǎn); 切面: 關(guān)注點(diǎn)形成的類,就叫切面(類)! 面向切面編程,就是指對(duì)很多功能都有的重復(fù)的代碼抽取,再在運(yùn)行的時(shí)候往業(yè)務(wù)方法上動(dòng)態(tài)植入“切面類代碼”。 切入點(diǎn): 執(zhí)行目標(biāo)對(duì)象方法,動(dòng)態(tài)植入切面代碼。 可以通過(guò)切入點(diǎn)表達(dá)式,指定攔截哪些類的哪些方法; 給指定的類在運(yùn)行的時(shí)候植入切面類代碼。
4.容器:Spring 是一個(gè)容器, 因?yàn)樗⑶夜芾響?yīng)用對(duì)象的生命周期
5.框架:Spring 實(shí)現(xiàn)了使用簡(jiǎn)單的組件配置組合成一個(gè)復(fù)雜的應(yīng)用. 在 Spring 中可以使用 XML 和 Java 注解組合這些對(duì)象
6.一站式
Spring提供了一站式解決方案: 1) Spring Core spring的核心功能: IOC容器, 解決對(duì)象創(chuàng)建及依賴關(guān)系 2) Spring Web Spring對(duì)web模塊的支持。 可以與struts整合,讓struts的action創(chuàng)建交給spring spring mvc模式 3) Spring DAO Spring 對(duì)jdbc操作的支持 【JdbcTemplate模板工具類】 4) Spring ORM spring對(duì)orm的支持: 既可以與hibernate整合,【session】 也可以使用spring的對(duì)hibernate操作的封裝 5)Spring AOP 切面編程 6)SpringEE spring 對(duì)javaEE其他模塊的支持
以上這篇關(guān)于Spring總結(jié)(必看篇)就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
springboot + rabbitmq 如何實(shí)現(xiàn)消息確認(rèn)機(jī)制(踩坑經(jīng)驗(yàn))
這篇文章主要介紹了springboot + rabbitmq 如何實(shí)現(xiàn)消息確認(rèn)機(jī)制,本文給大家分享小編實(shí)際開(kāi)發(fā)中的一點(diǎn)踩坑經(jīng)驗(yàn),內(nèi)容簡(jiǎn)單易懂,需要的朋友可以參考下2020-07-07使用@PathVariable注解如何實(shí)現(xiàn)動(dòng)態(tài)傳值
這篇文章主要介紹了使用@PathVariable注解如何實(shí)現(xiàn)動(dòng)態(tài)傳值,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-10-10spring通過(guò)構(gòu)造函數(shù)注入實(shí)現(xiàn)方法分析
這篇文章主要介紹了spring通過(guò)構(gòu)造函數(shù)注入實(shí)現(xiàn)方法,結(jié)合實(shí)例形式分析了spring通過(guò)構(gòu)造函數(shù)注入的原理、實(shí)現(xiàn)步驟及相關(guān)操作注意事項(xiàng),需要的朋友可以參考下2019-10-10