日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

基于配置文件實(shí)現(xiàn)Spring AOP日志管理

 eeason 2012-02-13

spring AOP 是基于面向切面的編程,它能夠使得我們專(zhuān)注于我們的業(yè)務(wù)處理,將一些其他的東西由它來(lái)統(tǒng)一完成,程序的侵入性很小,所以被廣泛應(yīng)用,至于實(shí)現(xiàn)原理我就不多說(shuō)了,兩個(gè)字:"代理"!

下面說(shuō)說(shuō)標(biāo)題所示的應(yīng)用,記錄日志,什么時(shí)候記錄日志,都記錄什么?想想,可不 就是在調(diào)用方法的時(shí)候?qū)懭罩韭?,之前如果使用logger的話,都會(huì)在方法的開(kāi)始寫(xiě)一個(gè)logger.info("xxxxxxxxxxxx");結(jié)束的 時(shí)候再寫(xiě)一個(gè),這不是很麻煩嗎,每次都要寫(xiě)。實(shí)際上這個(gè)時(shí)候我們就可以用aop來(lái)做,當(dāng)方法進(jìn)入的時(shí)候?qū)懸粭l日志,結(jié)束的時(shí)候再寫(xiě)一條,分別對(duì)應(yīng)“前置通 知”和”后置通知“,如果我們都日志有新的寫(xiě)法,值需要修改控制日志的這個(gè)類(lèi),對(duì)程序沒(méi)有絲毫影響,也就談不上改動(dòng)大量的代碼了。下面開(kāi)始:

1.引入aop的命名空間(其中有AOP的那部分):

<beans xmlns="http://www./schema/beans"
xmlns:xsi="http://www./2001/XMLSchema-instance"
xmlns:context="http://www./schema/context"
xmlns:aop="http://www./schema/aop"
xsi:schemaLocation="http://www./schema/beans
http://www./schema/beans/spring-beans-2.5.xsd
http://www./schema/context
http://www./schema/context/spring-context-2.5.xsd
http://www./schema/aop
http://www./schema/aop/spring-aop-2.5.xsd">

2.書(shū)寫(xiě)記錄日志的類(lèi):

package com.yjck.fm.util;
import org.apache.log4j.Logger;
import org.aspectj.lang.JoinPoint;
public class LogUtil {
Logger logger = Logger.getLogger(LogUtil.class);
public void logAll(JoinPoint jp){
String methodName = jp.getSignature().getName();
logger.info(jp.getTarget().getClass().getName()+"---"+methodName);
Object[] args = jp.getArgs();
for(int i=0;i<args.length;i++){
logger.info("params["+i+"]:"+ args[i].toString());
}
}
}




上面這段代碼實(shí)現(xiàn)了輸出要調(diào)用的類(lèi)名,方法已經(jīng)參數(shù)。

3.配置xml文件:

<!-- 日志管理aop -->
<!-- 強(qiáng)制使用cglib代理,如果不設(shè)置,將默認(rèn)使用jdk的代理,但是jdk的代理是基于接口的 -->
<aop:config proxy-target-class="true" /> 
<aop:config>
 <aop:aspect id="myAspect" ref="logUtil">
  <aop:pointcut expression="execution(* com.yjck.fm.*.action.*.*(..))" id="logPointCut"/>
  <aop:before method="logAll" pointcut-ref="logPointCut"/>
 </aop:aspect>
</aop:config>
<!-- 日志記錄類(lèi) -->       
 <bean id="logUtil" class="com.yjck.fm.util.LogUtil"></bean>



注意:我這里配置的是攔截所有action的所有方法,可以根據(jù)自己的情況配置,同時(shí)也只配了一個(gè)”前置通知“before,如果要需要還可以配置其他的。


OK,到此,實(shí)現(xiàn)已經(jīng)完畢了!

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類(lèi)似文章 更多