使用aop拦截方法,里面的输出顺序每次不同?
@Before("execution(* x.x.x.x.*.save(..))")
public void berforSaveInterrput(JoinPoint joinPoint) {
Object[] args = joinPoint.getArgs();
UserinfoEntity user = (UserinfoEntity) args[0];
if(user.getPwd().equals("1232")) {
System.err.println("请不要使用简单密码");
}
System.out.println("添加新用户'"+user.getLoginid()+"'");
}
代码如上,图中是连续执行5次的输出结果,为什么有时候输出信息的顺序不是按代码的执行顺序来的?
------解决方案--------------------输出的sql语句是不固定的。你的save方法在哪里的,通知
------解决方案--------------------建议在每一行前面都加上用户ID,用以区别每一行log的输出源。
------解决方案--------------------
这样的情况怎么看都想是某些并发Request同时向一个log文件里面输出造成的结果。前后顺序不对也是假象。
从我用aop的经验来看,单纯的代码前后执行颠倒是不可能的。