下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、,Spring AOP,AOP概述 AOP基本概念。 AOP實現(xiàn)方式。 逐步重構(gòu)理解AOP。 日志/安全/異常處理/性能檢測。,本章目標(biāo),AOP概述,AOP: 面向方面編程 作為OO面向?qū)ο蟮难a充,而不是替代。 AOP目標(biāo): 不改變現(xiàn)有代碼的基礎(chǔ)上,給系統(tǒng)動態(tài)增加橫切關(guān)注點。 符合OCP開閉原則。,AOP基本概念,核心關(guān)注點:業(yè)務(wù)功能。 通知/切面/Advice/橫切關(guān)注點: 對公共服務(wù)的模塊化。 切入點:設(shè)置加入切面位置的表達(dá)式。 顧問Advisor:切面+切入點,AOP實現(xiàn)方式,JDK動態(tài)代理 JDK1.4后增加的內(nèi)容。 只能對實現(xiàn)了接口的類生成代理,而不能針對類。 CGLIB字節(jié)碼增強
2、是針對類實現(xiàn)代理,主要是對指定的類生成一個子類,覆蓋其中的方法。因為是繼承,所以該類或方法最好不要聲明成final ApectJ支持方法攔截與屬性修改 Spring AOP只支持方法攔截。,spring對AOP的支持,如果目標(biāo)對象實現(xiàn)了接口,默認(rèn)情況下會采用JDK的動態(tài)代理實現(xiàn)AOP 目標(biāo)對象實現(xiàn)了接口,也可以強制使用CGLIB實現(xiàn)AOP 添加CGLIB庫,SPRING_HOME/cglib/*.jar 在spring配置文件中加入 如果目標(biāo)對象沒有實現(xiàn)接口,必須采用CGLIB庫 spring會自動在JDK動態(tài)代理和CGLIB之間轉(zhuǎn)換,常見橫切關(guān)注點,日志 事務(wù) 安全 異常處理 性能檢測,Ad
3、vice,MethodBeforeAdvice 前置通知 在業(yè)務(wù)方法執(zhí)行之前執(zhí)行 AfterReturningAdvice 后置通知 在業(yè)務(wù)方法執(zhí)行之后執(zhí)行 MethodInterceptor 環(huán)繞通知 在業(yè)務(wù)方法執(zhí)行前后執(zhí)行,甚至替代攔截的方法。 ThrowsAdvice 拋出異常時執(zhí)行。,核心關(guān)注點,核心業(yè)務(wù)邏輯 public class AopDemo implements IAopDemo public void doSomething() throws Exception System.out.println(Process Buniess!); ,IAopDemo,package
4、com.lxt008.aop; public interface IAopDemo public abstract void doSomething() throws Exception; ,客戶端,ApplicationContext ctx=new ClassPathXmlApplicationContext(applicationContext.xml); IAopDemo demo=(IAopDemo)ctx.getBean(aopDemo); try demo.doSomething(); catch(Exception e) System.out.println(Found Exc
5、eption); ,MethodBeforeAdvice,public class SecrityManager implements MethodBeforeAdvice public void before(Method m,Object args,Object target) System.out.println(before Check!); ,applicationContext.xml,被代理目標(biāo): 安全通知 ,ProxyFactoryBean, com.lxt008.aop.IAopDemo secrityAdvice ,AfterReturningAdvice,public c
6、lass LogManagerimplements AfterReturningAdvice public void afterReturning(Object returnValue,Method method,Object args, Object target) throws Throwable System.out.println(After Log!); ,MethodInterceptor,public class PerformanceAroundAdvice implements MethodInterceptor public Object invoke(MethodInvo
7、cation invocation) throws Throwable Object returnValue=null; /開始計時 StopWatch sw = new StopWatch(); sw.start(invocation.getMethod().getName(); returnValue = ceed(); /結(jié)束計時 sw.stop(); Method m = invocation.getMethod(); Object target = invocation.getThis(); Object args = invocation.getArgu
8、ments();,MethodInterceptor,System.out.println(); System.out.println(執(zhí)行方法名: + m.getName(); System.out.println(目標(biāo)類: + target.getClass().getName(); if(args!=null) System.out.println(參數(shù)列表:); for (int i = 0; i args.length; i+) System.out.print(第 + i + 個參數(shù): + argsi); System.out.println(); System.out.print
9、ln(總供使用時間: + sw.getTotalTimeMillis() + ms); return returnValue; ,ThrowsAdvice,public class MyThrowsAdvice implements ThrowsAdvice public void afterThrowing( Method method, Object args, Object target, Exception ex) System.out.println(捕獲其它不明異常); System.out.println(異常發(fā)生方法: + method.getName(); System.out.println(); ,修改doSomething(),public void doSomething() throws Exception System.out.println(Process Buniess!); throw new Exception(unkown exception); 加入異常測試。 增加業(yè)務(wù)方法引入Advisor,Advisor, doSomething ,RegexpMethodPointcutAdvisor, .*doSomething.* ,RegexpMethodPointcutAdvisor, ,applica
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026云南玉溪興潔垃圾處理有限公司招聘勞務(wù)派遣駕駛員4人考試參考試題及答案解析
- 2026年合肥財經(jīng)職業(yè)學(xué)院高職單招職業(yè)適應(yīng)性考試備考題庫有答案解析
- 2026福建宏業(yè)交通服務(wù)有限公司招聘6人考試參考題庫及答案解析
- 2026年1月江蘇省寶應(yīng)中學(xué)招聘教師5人考試參考試題及答案解析
- 2026四川自貢醫(yī)元健康管理有限責(zé)任公司招聘工作人員11人考試參考題庫及答案解析
- 2026廣西欽州市人力資源和社會保障局招聘公益性崗位人員2人考試備考試題及答案解析
- 2026江蘇中國藥科大學(xué)智能藥學(xué)交叉研究院工作人員招聘5人考試參考題庫及答案解析
- 2026年昆明市西山區(qū)人民醫(yī)院聘非事業(yè)編制工作人員(4人)考試參考試題及答案解析
- 2026四川綿陽市三臺縣婦幼保健院 招聘編外聘用人員3人(眼科視光師、皮膚科醫(yī)師、外科醫(yī)師)考試備考題庫及答案解析
- 2026中國聯(lián)通上海市分公司校園招聘考試備考試題及答案解析
- 上海市松江區(qū)2026屆初三一模物理試題(含答案)
- 小學(xué)六年級英語2026年上學(xué)期語法改錯綜合真題
- 2026長治日報社工作人員招聘勞務(wù)派遣人員5人備考題庫完美版
- 護理核心制度內(nèi)容精要
- 光伏板清洗施工方案
- 閱讀理解體裁與命題方向(復(fù)習(xí)講義)-2026年春季高考英語(上海高考專用)
- 俱樂部轉(zhuǎn)讓合同模板(3篇)
- 指南抗菌藥物臨床應(yīng)用指導(dǎo)原則(2025版)
- 光伏系統(tǒng)的安裝工程監(jiān)理實施細(xì)則
- 教練員勞務(wù)合同范本
- 預(yù)防凍雨災(zāi)害課件
評論
0/150
提交評論