获取连接点信息,参考使用注解定义增强
1.UserBizLogger .java
1 package com.aop; 2 3 import java.util.Arrays; 4 5 import org.apache.log4j.Logger; 6 import org.aspectj.lang.JoinPoint; 7 import org.aspectj.lang.annotation.AfterReturning; 8 import org.aspectj.lang.annotation.Aspect; 9 import org.aspectj.lang.annotation.Before; 10 11 /** 12 * 13 * @author Mr 14 * 使用注解 15 */ 16 @Aspect 17 public class UserBizLogger { 18 private static final Logger log = Logger.getLogger(UserBizLogger.class); 19 //前置增强 com.biz.IUserBiz表示接口全类名 20 @Before("execution(* com.biz.IUserBiz.*(..))") 21 public void before(JoinPoint jp){ 22 log.info("调用"+jp.getTarget()+"的"+jp.getSignature().getName()+ 23 "方法,方法的参数是:"+Arrays.toString(jp.getArgs())); 24 } 25 //后置增强 26 @AfterReturning(pointcut="execution(* com.biz.IUserBiz.*(..))",returning="returnValue") 27 public void afterReturing(JoinPoint jp,Object returnValue){ 28 log.info("调用"+jp.getTarget()+"的"+jp.getSignature().getName()+ 29 "方法,方法的返回值是:"+returnValue); 30 } 31 }
2.spring配置文件
1 <bean id="dao" class="com.dao.impl.IUserDaoImpl"></bean> 2 <bean id="biz" class="com.biz.impl.IUserBizImpl"> 3 <property name="dao" ref="dao"></property> 4 </bean> 5 <!-- 定义包含注解的增强类的实例 --> 6 <bean class="com.aop.UserBizLogger"></bean> 7 <!-- 织入使用注解定义的增强,需要引入AOP命名空间 --> 8 <aop:aspectj-autoproxy></aop:aspectj-autoproxy>
3.测试结果