spring下午代碼_課堂筆記講義框架應(yīng)用技術(shù)_第1頁
spring下午代碼_課堂筆記講義框架應(yīng)用技術(shù)_第2頁
spring下午代碼_課堂筆記講義框架應(yīng)用技術(shù)_第3頁
spring下午代碼_課堂筆記講義框架應(yīng)用技術(shù)_第4頁
spring下午代碼_課堂筆記講義框架應(yīng)用技術(shù)_第5頁
已閱讀5頁,還剩9頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、第1章Spring 概述1.1 spring 簡(jiǎn)介Spring 是一個(gè)開放源代碼的設(shè)計(jì)層面框架,他解決的是業(yè)務(wù)邏輯層和其他各層的松耦合問題,因此它將面向接口的編程貫穿整個(gè)系統(tǒng)應(yīng)用。Spring 是于 2003 年興起的一個(gè)輕量級(jí)的 Java 開發(fā)框架,由 Rod Johnson 創(chuàng)建。簡(jiǎn)單來說,Spring 是一個(gè)分層的 JavaSE/EEfull-stack(一站式) 輕量級(jí)開源框架。1.2 Spring 與解耦合Spring 根據(jù)功能的不同,將代碼劃分為兩類:主業(yè)務(wù)邏輯與系統(tǒng)級(jí)服務(wù)(交叉業(yè)務(wù)邏輯)。主業(yè)務(wù)邏輯間,及主業(yè)務(wù)邏輯與系統(tǒng)級(jí)服務(wù)間的耦合度是較高的。Spring 對(duì)于前述兩種較高的耦

2、合度,采用了兩種不同的技術(shù)進(jìn)行解耦。使用 IoC 解耦主業(yè)務(wù)邏輯間的耦合度,使用 AOP 解耦主業(yè)務(wù)邏輯與系統(tǒng)級(jí)服務(wù)間的耦合度。1.3 Spring 框架的地址:官網(wǎng):1.4 第一個(gè) Spring 程序第2章Spring 與 IoCIoC,Inverof Control,控制反轉(zhuǎn)。將傳統(tǒng)上由程序代碼直接操控的對(duì)象創(chuàng)建權(quán)交給容器,通過容器來管理對(duì)象的生命周期??刂品崔D(zhuǎn)是對(duì)對(duì)象控制權(quán)的轉(zhuǎn)移,從代碼本身轉(zhuǎn)移到了容器。IoC 是一種,是一個(gè)概念,其實(shí)現(xiàn)方式有很多。當(dāng)前比較流行的實(shí)現(xiàn)方式有兩種:依賴注入與依賴查找。依賴查找:DL,Dependency Lookup,代碼中需要給出目標(biāo)對(duì)象的存放路徑,系統(tǒng)

3、會(huì)根據(jù)路徑到容器中查找相應(yīng)的對(duì)象。典型的應(yīng)用是 JNDI(Java Naming and Directoryerface,Java 命名與目錄接口,這是一個(gè)第容器,是一個(gè)服務(wù)器)。依賴注入:DI,Dependency Injection,代碼中無需給出目標(biāo)對(duì)象的定位路徑,只需給定對(duì)象名稱或類型,系統(tǒng)就會(huì)直接到容器中進(jìn)行查找。是目前最優(yōu)秀的解耦方式。典型應(yīng)用是 Spring。2.1 基于 XML 的 DI注入分類2.1.1(1)設(shè)值注入(2)構(gòu)造注入命名空間注入2.1.2(1)p 命名空間設(shè)值注入(2)c 命名空間構(gòu)造注入數(shù)組與集合屬性注入2.1.3域?qū)傩缘淖詣?dòng)注入2.1.4SPEL 注入2.1

4、.5為應(yīng)用指定多個(gè) Spring 配置文件2.1.6(1)關(guān)系的配置文件(2)包含關(guān)系的配置文件2.2 基于注解的 DI2.2.1搭建環(huán)境(1) 導(dǎo)入 aop 的 Jar 包(2) 在 xml 文件中導(dǎo)入 context 約束2.2.2注解(1) Component與該注解功能相同,意義不同的注解還有三個(gè):Reitory:注解在實(shí)現(xiàn)類上Service:注解在 Service 實(shí)現(xiàn)類上Controller:注解在 SpringMVC 的處理器類這四個(gè)注解都表示,將當(dāng)前類的對(duì)象交給 Spring 容器來管理。(2) Value其在注入值時(shí)即沒有使用設(shè)值注入,也沒有使用構(gòu)造注入,而就是注解注入。即,

5、與set 方法、帶參構(gòu)造器沒有任何關(guān)系。(3) 域?qū)傩缘淖詣?dòng)注入AutowiredQualifier Reource2.2.3CodeConfig 容器類2.2.4使用 Spring 的 JUnit4 測(cè)試 Spring(1) 需要導(dǎo)入 spring-test 的 Jar 包(2) 在測(cè)試類頭上添加兩個(gè)注解(3) 在測(cè)試類中結(jié)合Autowired 使用2.2.5注解與 XML 共同使用時(shí)的優(yōu)選級(jí)XML 的優(yōu)選級(jí)要高于注解的。第3章Spring 與 AOP3.1 AOP 概述3.1.1AOP 簡(jiǎn)介在業(yè),AOP 為 Aspect Oriented Programming 的縮寫,意為:面向切面編程

6、,通過預(yù)編譯方式和運(yùn)行期動(dòng)態(tài)實(shí)現(xiàn)程序功能的的一種技術(shù)。AOP 是 OOP 的延續(xù),是開發(fā)中的一個(gè)熱點(diǎn),也是 Spring 框架中的一個(gè)重要內(nèi)容,是函數(shù)式編程的一種衍生范型。利用 AOP 可以對(duì)業(yè)務(wù)邏輯的各個(gè)部分進(jìn)行,從而使得業(yè)務(wù)邏輯各部分之間的耦合度降低,提高程序的可重用性,同時(shí)提高了開發(fā)的效率。AOP 底層采用兩種動(dòng)態(tài)模式實(shí)現(xiàn):JDK 的動(dòng)態(tài),與 CGLIB 動(dòng)態(tài)。3.1.2AOP 編程術(shù)語(1) 切面(Aspect)交叉業(yè)務(wù)邏輯,例如事務(wù)、安全、日志等,稱為切面。(2) 目標(biāo)對(duì)象()業(yè)務(wù)類的對(duì)象,稱為目標(biāo)對(duì)象。(3) 織入(Weaving)將切面到目標(biāo)對(duì)象的目標(biāo)方法的過程,稱為織入。(4)

7、 連接點(diǎn)(JoinPo)目標(biāo)對(duì)象中可以被切面織入的方法。(5) 切入點(diǎn)(Pocut)目標(biāo)對(duì)象中真正被切面織入的方法。切入點(diǎn)一定是連接點(diǎn),但連接點(diǎn)不一定是切入點(diǎn)。被標(biāo)記為 final 的方法是不能作用連接點(diǎn)與切入點(diǎn)的。(6) 通知(Advice)通知是切面的一種,可以完成簡(jiǎn)單的織入功能。通知可以定義切面織入的時(shí)間點(diǎn),切入點(diǎn)定義了切面織入的位置。(7) 顧問(Advisor)顧問是切面的一種,能夠?qū)⑼ㄖ愿鼮閺?fù)雜的方式織入到目標(biāo)對(duì)象中,是將通知包裝為更復(fù)雜的切面的裝配器。3.2 AspectJ 對(duì) AOP 的實(shí)現(xiàn)3.2.1AspectJ 簡(jiǎn)介AspectJ 是一個(gè)面向切面的框架,它擴(kuò)展了 Java

8、 語言。AspectJ 定義了 AOP 語法,所以它有一個(gè)專門的編譯器用來生成遵守 Java 字節(jié)編碼規(guī)范的 Class 文件。類型3.2.2AspectJ常用通知有五種:前置通知后置通知環(huán)繞通知異常通知最終通知3.2.3AspectJ 的切入點(diǎn)表達(dá)式通過切入點(diǎn)表達(dá)式可以過濾和選擇切入點(diǎn)。execution(權(quán)限類型返回值類型 全限定性類名方法名(參數(shù)列表)拋出的異常類型)表達(dá)式:execution(public * *.*.*(.)意義:指定任意公共方法均為切入點(diǎn)。表達(dá)式:execution(* com.abc.service.*.*(.)意義:指定 com.abc.service 包中的何

9、意類的任意方法均為切入點(diǎn)。表達(dá)式:execution(*.service.*.*(.)意義:指定 service 包(該包前可以有多級(jí)父包)中的何意類的任意方法均為切入點(diǎn)。com.abc.service 是匹配的com.service 是匹配的service 是匹配的表達(dá)式:execution(*.service.*.*(.)意義:指定 service 包(該包前只能有一級(jí)父包)中的何意類的任意方法均為切入點(diǎn)。com.abc.service 是不匹配的com.service 是匹配的service 是不匹配的表達(dá)式:execution(*.*.doSome(.)意義:指定何意類的 doSome

10、()方法均為切入點(diǎn)。3.3 AspectJ 的開發(fā)環(huán)境搭建導(dǎo)入依賴3.3.1(1)AspectJJar 包(2)Spring 整合 AspectJ 的 Jar 包(3)Spring 對(duì) AOP 的實(shí)現(xiàn) Jar 包(4)AOP的 Jar 包3.3.2修改 Spring 配置文件(1) Spring 配置文件添加 AOP 約束(2)AOP 的 AspectJ 自動(dòng)3.4 AspectJ 基于注解的 AOP 實(shí)現(xiàn)前置通知后置通知環(huán)繞通知異常通知最終通知3.5 AspectJ 基于 XML 的 AOP 實(shí)現(xiàn)前置通知后置通知環(huán)繞通知異常通知最終通知第4章Spring 與4.1 Spring 與 MyBa

11、tis 整合這是典型的 IoC 的應(yīng)用。導(dǎo)入依賴4.1.1(1)Spring 的 5 個(gè)基本 Jar 包(2)Spring 的 JDBC 的 Jar 包(3)Spring 事務(wù) Jar 包(4)spring 的 AOP 的 Jar 包(5)mybatis 的Jar 包(6)mybatis 與 Spring 整合的 Jar 包(7)驅(qū)動(dòng) Jar 包(8) Druid 數(shù)據(jù)源 Jar 包(9) log4j 的 Jar 包(10)slf4j 的 Jar 包(11)slf4j 與 log4j 整合 Jar 包編寫代碼4.1.2(1)定義實(shí)體類與 DB 表(2)定義 Service 接口及實(shí)現(xiàn)類(3)定義接口(4)定義測(cè)試類編寫配置文件4.1.3(1)定義 MyBatis 的兩個(gè)配置文件(2)定義 Spring 相關(guān)配置文件4.2 Spring 與事務(wù)這是典型的AOP 的應(yīng)用。4.2.1Spring 事務(wù)管理的 API(1)事務(wù)管理器接口A、 常用的實(shí)現(xiàn)類DataSourceTranionManager:使用 JDBC、MyBatis、iBatis 等進(jìn)行持久化時(shí)使用。HibernateTranionManager:使用 Hibernate 進(jìn)行持久化時(shí)使用。B、 Spring 回滾方式Spring 事務(wù)默認(rèn)的回滾方式是:發(fā)生運(yùn)行時(shí)異?;貪L,發(fā)生受查異常提交。(2) 事務(wù)定義接口默

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論