Spring的AOP有两种实现方式,一是通过xml配置,二是通过注解,为减少代码量提高可读性跟代码入侵本,若项目使用了spring的框架,本人首选的都是用注解去开发,方法很简单,只需要三步就可以搞定切面
一:在xml文件中开始注解
/**
* 用户操作记录日志 切面控制层
* Created by longzhiqinag on 2017/3/29.
*/
@Aspect
@Component
public class UserOperateLogHandler{
}
@Before("execution(* com.tangcy.npcmeeting.controller.MeetingController.deleteBigMeeting(..))")
public void deleteBigMeeting_Before(JoinPoint joinPoint){
System.out.println("这里是目标方法执行前先执行");
}
@AfterReturning(returning = "entity",value = "execution(* com.tangcy.npcmeeting.controller.MeetingController.deleteBigMeeting(..))")
public void deleteBigMeeting_After(JoinPoint joinPoint,Object entity){
System.out.println("这里是目标方法执行完并成功返回结果 正常结束后才执行");
System.out.println("方法的返回结果为"+entity);
System.out.println("目标方法内的参数为"+ Arrays.asList(joinPoint.getArgs()));
}
@AfterThrowing(throwing = "e",value = "execution(* com.tangcy.npcmeeting.controller.MeetingController.deleteBigMeeting(..))")
public void deleteBigMeeting_Throw(Throwable e){
System.out.println("这里是目标方法抛出异常后才执行");
System.out.println("异常信息为"+e);
}
org.aspectj.lang.JoinPoint;这个包下的JoinPoint,返回值类型为Object[],需自已转换类型
如以下为自定义的方法
@AfterReturning("execution(public void com.tangcy.npcmeeting.controller.OperateController.save(..))")
public void save_After(JoinPoint joinPoint){
Object[] obj = joinPoint.getArgs();
//将obj强转为你的参数类型再进行对应的操作
}
所有的注解通知用法都一样,这里只是用@AfterReturning来举例说明
很简单吧...