一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - Spring AOP日志框架實現過程圖解

Spring AOP日志框架實現過程圖解

2020-10-01 01:19kinglead Java教程

這篇文章主要介紹了Spring AOP日志框架實現過程圖解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下

AOP日志框架實現

JDK動態代理實現日志框架

首先,在項目包com.ay.test 下創建業務接口類BusinessClassService,具體代碼如下:

Spring AOP日志框架實現過程圖解

BusinessC lassService 業務接口類可以理解為日常開發業務創建的接口類, 接口中有一個簡 單的方法doSomeThing 。然后,開發業務類的實現類BusinessClassServiceImpl,具體代碼如下:

Spring AOP日志框架實現過程圖解

Spring AOP日志框架實現過程圖解

實現類BusinessClassServicelmpl 實現了BusinessClassServ ice 接口, 并實現了doSomeThing 方法,在方法中打印“ do something ......” 。接著,開發日志接口類My Logger , 具體代碼如下:

Spring AOP日志框架實現過程圖解

• savelntoMethodTime : 記錄進入方法的時間。 • saveOutMethodTime : 記錄退出方法的時間。 接口類MyLogger 開發完成之后,用MyLoggerlmpl 類實現它, 具體代碼如下:

Spring AOP日志框架實現過程圖解

Spring AOP日志框架實現過程圖解

MyLoggerlmpl 類實現接口MyLogger , 并實現savelntoMethodTime 和saveOutMethodTime 方法,在方法內部打印進入/退出方法的時間。 最后, 實現最重要的類MyLoggerHandler , 具體代碼如下:

Spring AOP日志框架實現過程圖解

Spring AOP日志框架實現過程圖解

• lnvocationHandler : 該接口中僅定義了一個方法: public Object invoke(Object obj, Method method, Object[] args) , 在使用時,第一個參數obj 一般是指代理類, method是 被代理的方法, args為該方法的參數數組。這個抽象方法在代理類中動態實現。 所有的代碼開發完成之后,開發測試類MyLoggerTest 進行測試, 具體代碼如下:

Spring AOP日志框架實現過程圖解

• Proxy . newProxylnstance :該類即為動態代理類, static Object newProxylnstance (ClassLoader loader, Class[] interfaces, JnvocationHandler h),返回代理類的一個實例,返 回后的代理類可以當作被代理類使用。在Proxy.new Proxy Instance方法中,共有以下三 個參數: • Classloader loader: targetObject.getClass().getClassLoader()目標對象通過getClass 方法獲取類的所有信息后,調用getClassLoader()方法來獲取類加載器。獲取類力口載 器后,可以通過這個類型的加載器,在程序運行時,將生成的代理類力口載到JVM即 Java虛擬機中,以使運行時需要。 •Class[] interfaces: targetObject.getClass().getinterfaces()獲取被代理類的所有接口信 息,以便于生成的代理類可以具有代理類接口中的所有方法。 • lnvocationHandler h : 使用動態代理是為了更好地擴展, 比如在方法之前做什么操 作,之后做什么操作,這個時候這些公共的操作可以統一交給代理類去做。此時需 要調用實現了InvocationHandler 類的一個回調方法。

運行測試類的ma in 方法,便可以在Intellij IDEA 控制臺查看打印信息,具體信息如下:

Spring AOP日志框架實現過程圖解

以上就是利用動態代理模式實現簡單的日志框架, 具體的結構如圖

Spring AOP日志框架實現過程圖解

這里總結一下JDK 動態代理的一般實現步驟:

( l )創建一個實現InvocationHandler 接口的類MyLoggerHandler,它必須實現invoke 方法。

(2 )創建被代理的類BusinessClassService 以及接口BusinessClassServicelmpl 。

(3 )調用Proxy 的靜態方法newProxyInstance ,創建一個代理類。

( 4 )通過代理類調用方法。

spring aop實現日志框架

使用Spring AOP 的注解方式實現日志框架是非常簡單的。首先,在配置文件 spring-mvc且nl 中添加配置, 具體代碼如下:

<aop:aspectj-autoproxy proxy-target-class="true">

</aop:aspectj-autoproxy>: 聲明自動為Spring容器中那些配置@aspectJ切面的bean創建 代理,織入切面。<aop : aspectj -autoproxy />有一個proxy-target-class屬性,默認為fal se, 表示使用JDK動態代理織入增強,當配置poxy-target-class 為true 時,表示使用CGLib動 態代理技術織入增強。不過即使設置proxy-target-class 為fa lse ,如果目標類沒有聲明接 口,則Spring將自動使用CGLib動態代理。

配置添加完成之后,要定義一個切面Loglnterceptor ,具體代碼如下:

Spring AOP日志框架實現過程圖解

Spring AOP日志框架實現過程圖解

• @Aspect : 標識Loglntercepto r類為一個切面,供容器讀?。?• @Before : 在所攔截方法執行之前執行before 方法。 • @After:在所攔截方法執行之后執行after方法。 • @Around :可以同時在所攔截方法的前后執行一段邏輯。 • execution 切入點指示符: Spring AOP日志框架實現過程圖解表示在controller 包中定義的任意方法 的執行。execution 切入點指示符執行表達式的格式如下:

Spring AOP日志框架實現過程圖解

翻譯為:

Spring AOP日志框架實現過程圖解

其中黑色字體部分不能省略,各部分都支持通配符“*”來匹配全部。比較特殊的為形參 表部分,其支持以下兩種通配符:

Spring AOP日志框架實現過程圖解

例如:

Spring AOP日志框架實現過程圖解

下面舉一些execution 的使用實例,具體內容見表3 -3 。

Spring AOP日志框架實現過程圖解

Spring AOP日志框架實現過程圖解

切面類Loglnterceptor 開發完成之后, 重新啟動springmvc-mybatis-book 項目,項目成功啟 動后,在瀏覽器輸入網址: http: //localbost: 8080/user/findAll , 便可以在lntellij IDEA 開發工具的 控制臺看到如下的打印信息:

Spring AOP日志框架實現過程圖解

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

原文鏈接:https://www.cnblogs.com/kinglead/p/10979392.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 包臀裙女教师波多野结衣 | 香蕉在线精品亚洲第一区 | 九九精品视频一区二区三区 | 国产精品xxxav免费视频 | 日韩精品一区二区 | 免费一级日本c片完整版 | 美女扒开胸罩露出奶 | 叛佛 作者满栀小说免费阅读 | 四虎最新免费观看网址 | 欧美日韩国产成人综合在线 | 青草视频在线观看免费资源 | 色依依视频视频在线观看 | 国产精品全国探花在线观看 | 精品久久综合一区二区 | 国产一区国产二区国产三区 | 京东热在线观看 | 青青青在线视频播放 | 毛片影院| 波多野结衣小说 | 99在线视频精品费观看视 | 国产成人精品高清在线 | 4455四色永久免费 | 男生的j桶女人屁免费视频 男生操男生 | bl超h 高h 污肉快穿np | 成人精品亚洲 | 国产男女爱视频在线观看 | 慢慢娇淫 | 国产精品模特hd在线 | 久久青青草视频在线观 | 60岁妇女毛片免费观看 | 新新电影理论中文字幕 | 91se精品免费观看 | www.爱操 | 99久久无色码中文字幕 | 青久草视频 | 星空传媒在线视频 | 手机看片自拍自自拍日韩免费 | 欧美特一级 | 密臀tv | 极品丝袜乱系列在线阅读 | 4444亚洲国产成人精品 |