1、先写一个切面类
package com.fd.logging;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.ProceedingJoinPoint;
import java.util.Arrays;
import java.util.List;
public class AspectLogging1 {
public void pointcut(){
}
public void beforeLogging(JoinPoint jp){
String name=jp.getSignature().getName();
List<Object> args= Arrays.asList(jp.getArgs());
System.out.println(name+"方法开始:"+args);
}
public void afterLogging(JoinPoint jp){
String name=jp.getSignature().getName();
System.out.println(name+"方法结束.");
}
public void afterReturningLogging(JoinPoint jp,Object result){
String name=jp.getSignature().getName();
System.out.println(name+"方法返回值:"+result);
}
public void afterThrowingLogging(JoinPoint jp,Exception ex){
String name=jp.getSignature().getName();
System.out.println(name+"方法的异常:"+ex);
}
public Object aroundLogging(ProceedingJoinPoint pjp){
Object result=null;
String name =pjp.getSignature().getName();
List<Object> args=Arrays.asList(pjp.getArgs());
try {
System.out.println(name+"方法开始:"+args);
result=pjp.proceed();
System.out.println(name+"方法结束.");
} catch (Throwable ex) {
System.out.println(name+"方法异常是:"+ex);
}
System.out.println(name+"方法返回值是:"+result);
return result;
}
}
2、在spring.xml中配置
<context:component-scan base-package="com.fd"/>
<bean id="aspectLogging" class="com.fd.logging.AspectLogging1"/>
<aop:config>
<aop:pointcut id="pointCut" expression="execution(* com.fd.service.*.*(..))"/>
<aop:aspect ref="aspectLogging">
<aop:before method="beforeLogging" pointcut-ref="pointCut"/>
<aop:after method="afterLogging" pointcut-ref="pointCut"/>
<aop:after-returning method="afterReturningLogging" returning="result" pointcut-ref="pointCut"/>
<aop:after-throwing method="afterThrowingLogging" throwing="ex" pointcut-ref="pointCut"/>
<aop:around method="aroundLogging" pointcut-ref="pointCut"/>
</aop:aspect>
</aop:config>