spring 面向切面編程,在執行SQL時打印類名及方法名 -开发者知识库

spring 面向切面編程,在執行SQL時打印類名及方法名 -开发者知识库,第1张

需求:在所有打印SQL語句前,加上SQL所在的類名及方法名。

解決方法:使用spring面向切面編程。


具體代碼:

package com.hys.qiantai.struts.action.liveservice;

import org.aopalliance.intercept.MethodInterceptor;
import org.aopalliance.intercept.MethodInvocation;
import org.apache.log4j.Logger;
/**
*/
public class LogDaoMethodPointcut implements MethodInterceptor {

private static final Logger logger = Logger.getLogger(LogDaoMethodPointcut.class);

@Override
public Object invoke(MethodInvocation arg0) throws Throwable {
System.out.println("Before: class: {} " arg0.getThis().getClass());
System.out.println("Method name: {} " arg0.getMethod().getName());
logger.info("Before: class: {} " arg0.getThis().getClass());
logger.info("Method name: {} " arg0.getMethod().getName());
return arg0.proceed();
}

}



在spring xml文件中添加切面:

<!-- 方法攔截器  MethodInterceptor applicationContext_transaction.xml -->  
<bean id="logDaoMethodPointcut" class="com.hys.qiantai.struts.action.liveservice.LogDaoMethodPointcut"></bean>
<aop:config proxy-target-class="true">
<aop:pointcut id="daoMethodPointcut" expression="execution(* com.hys.exam.dao.local.jdbc.*.*(..))"/>
<aop:advisor advice-ref="logDaoMethodPointcut" pointcut-ref="daoMethodPointcut" />
</aop:config>




最佳答案:

本文经用户投稿或网站收集转载,如有侵权请联系本站。

发表评论

0条回复