中文字幕日韩精品一区二区免费_精品一区二区三区国产精品无卡在_国精品无码专区一区二区三区_国产αv三级中文在线

SpringAOP實現日志框架的示例-創(chuàng)新互聯

Spring AOP實現日志框架的示例?相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。

10年積累的網站制作、網站設計經驗,可以快速應對客戶對網站的新想法和需求。提供各種問題對應的解決方案。讓選擇我們的客戶得到更好、更有力的網絡服務。我雖然不認識你,你也不認識我。但先網站制作后付款的網站建設流程,更有北海免費網站建設讓你可以放心的選擇與我們合作。

首先,在項目包com.ay.test 下創(chuàng)建業(yè)務接口類BusinessClassService,具體代碼如下:

Spring AOP實現日志框架的示例

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

Spring AOP實現日志框架的示例

Spring AOP實現日志框架的示例

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

Spring AOP實現日志框架的示例

• savelntoMethodTime : 記錄進入方法的時間。 • saveOutMethodTime : 記錄退出方法的時間。 接口類MyLogger 開發(fā)完成之后,用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為該方法的參數數組。這個抽象方法在代理類中動態(tài)實現。 所有的代碼開發(fā)完成之后,開發(fā)測試類MyLoggerTest 進行測試, 具體代碼如下:

Spring AOP實現日志框架的示例

• Proxy . newProxylnstance :該類即為動態(tài)代理類, 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 : 使用動態(tài)代理是為了更好地擴展, 比如在方法之前做什么操 作,之后做什么操作,這個時候這些公共的操作可以統(tǒng)一交給代理類去做。此時需 要調用實現了InvocationHandler 類的一個回調方法。

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

Spring AOP實現日志框架的示例

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

Spring AOP實現日志框架的示例

這里總結一下JDK 動態(tài)代理的一般實現步驟:

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

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

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

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

spring aop實現日志框架

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

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

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

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

Spring AOP實現日志框架的示例

Spring AOP實現日志框架的示例

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

Spring AOP實現日志框架的示例

翻譯為:

Spring AOP實現日志框架的示例

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

Spring AOP實現日志框架的示例

例如:

Spring AOP實現日志框架的示例

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

Spring AOP實現日志框架的示例

Spring AOP實現日志框架的示例

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

Spring AOP實現日志框架的示例

看完上述內容,你們掌握Spring AOP實現日志框架的示例的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注創(chuàng)新互聯-成都網站建設公司行業(yè)資訊頻道,感謝各位的閱讀!

新聞標題:SpringAOP實現日志框架的示例-創(chuàng)新互聯
標題路徑:http://www.rwnh.cn/article48/dgsehp.html

成都網站建設公司_創(chuàng)新互聯,為您提供動態(tài)網站、網站營銷品牌網站建設、Google、微信小程序、營銷型網站建設

廣告

聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯

外貿網站制作
宕昌县| 仁化县| 元阳县| 扎兰屯市| 明水县| 金乡县| 凤阳县| 新乡县| 辽宁省| 辰溪县| 延安市| 贵定县| 翁牛特旗| 彭州市| 綦江县| 土默特右旗| 乌什县| 灵寿县| 淮南市| 老河口市| 丹寨县| 大田县| 始兴县| 吉安市| 明溪县| 华安县| 五家渠市| 乌苏市| 兰州市| 措勤县| 张北县| 望都县| 得荣县| 平邑县| 九龙城区| 南江县| 昌平区| 广饶县| 崇仁县| 丰台区| 柞水县|