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

