日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

输出日志实例改成用Spring的AOP来实现

發布時間:2023/12/9 javascript 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 输出日志实例改成用Spring的AOP来实现 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.采用Interception Around通知的形式實現

Interception Around通知會在Join Point的前后執行,實現Interception Around通知的類需要實現接口MethodInterceptor。其實現思路是:

???? 1)首先實現接口MethodInterceptor,在Invoke()方法里編寫負責輸出日志信息的代碼,具體業務邏輯還使用前面的接口TimeBookInterface和它的實現類TimeBook

???? 2)然后在Spring的配置文檔中定義PointCut

???? 3)最后編寫測試程序,執行,查看輸出

?

?? 1)編寫負責輸出日志信息的類LogAround

???

//****LogAround.java**** package com.gc.actionimport org.aopalliance.interceptor.MethodInvocation; import org.aopalliance.interceptor.MethodInterceptor; import org.apache.log4j.Level; import org.apache.log4j.Logger;//Interception Around通知會在Join Point的前后執行 public class LogAround implements MethodIntercetor{private Logger logger = Logger.getLogger(this.getClass().getName());//負責輸出日志信息的代碼public Object invoke(MethodInvocation mi) throw Throwabel{logger.log(Level.INFO,mi.getArguments()[0]+"開始審核數據...");try{Object result = mi.proceed();return result;}finally{logger.log(Level.INFO,mi.getArguments()[0]+"審核數據結束...")} } }

參數MethodInvocation:通過它可以獲得方法的名稱,程序傳入的參數Object[]等

proceed方法,通過它即可執行被調用的方法

return result,返回值為被調用方法的返回值

??? com.gc.impl包中的接口和 com.gc.action包中的類

//*****TimeBookInterface.java****package com.gc.impl; import org.apache.log4j.Level;public interface TimeBookInterface{public void doAuding(String name); }//*****TimeBook.java******* package com.gc.action; import com.gc.impl.TimeBookInterface;public class TimeBook implements TimeBookInterface{public void doAuditing(String name){.... } }

??? 2)定義Spring的配置文檔config.xml

<!xml version="1.0" encoding = "UTF-8"?> <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN""http://www.springframework.org/dtd/spring-beans.dtd" > <beans><bean id="HelloWorld" class = "com.gc.action.HelloWorld" depends-on="date"><property name = "msg"><value>HelloWorld</value></property><property name = "date"><ref bean = "date"/></property></bean><bean id="date" class="java.util.Date"/><bean id="log" class="com.gc.action.LogAround"/><bean id="timeBook" class="com.gc.action.TimeBook"/><bean id="logProxy" class="org.springframework.aop.framework.ProxyFactoryBean"><property name="proxyInterfaces"><value>com.gc.impl.TimeBookInterface</value></property><property name="target"><ref Bean="timeBook"/></proterty><property name="interceportNames"><list><value>log</value></list></property></bean> </beans>

?? id為log的Bean,負責輸出日志信息;

?? id為timeBook的Bean,負責具體的業務邏輯考勤審核

?? id為logProxy的Bean,使用Spring提供的ProxyFactoryBean來實現代理,在該Bean里定義相關的屬性,包括要代理的接口,目標類急要使用的Interceptor。

? 3)測試代碼

??

1 //******TestHelloWorld********* 2 3 package com.gc.test; 4 5 import com.gc.action.TimeBook; 6 import com.gc.aciton.TimeBookProxy; 7 import com.gc.impl.TimeBookInterface; 8 public class TestHelloWorld{ 9 public static void main(String[] args){ 10 ApplicationContext actx = new FileSystemXmlApplicationContext("config.xml"); 11 TimeBookInterface timeBookProxy = (TimeBookInterface)actx.getBean("logProxy"); 12 timeBookProxy.doAuditing("張三"); 13 } 14 15 }

?

轉載于:https://www.cnblogs.com/victoria-c/p/5748701.html

總結

以上是生活随笔為你收集整理的输出日志实例改成用Spring的AOP来实现的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。