Spring AOP 踩坑记录 之 System.out.println
程序员文章站
2022-03-23 22:12:35
Controller配置代码如下:@RestControllerpublic class HelloWorldControlller { @RequestMapping("sayHello") public Map sayHello(String name){ System.out.println("被拦截方法开始执行,参数为" + name); Map map =...
Controller配置代码如下:
@RestController
public class HelloWorldControlller {
@RequestMapping("sayHello")
public Map<String,String> sayHello(String name){
System.out.println("被拦截方法开始执行,参数为" + name);
Map<String,String> map = new HashMap<>();
map.put("1","神雕侠侣");
map.put("2","射雕英雄传");
map.put("3","笑傲江湖");
map.put("4","天龙八部");
map.put("5","倚天屠龙记");
System.out.println("被拦截方法执行结束!");
return map;
}
}
AOP Advice配置代码如下:
@Component
@Aspect
public class BaseAop {
@Pointcut(value = "execution(* com.example.demo.controller.*.*(..))")
public void point(){
}
@Before("point()")
public void before(JoinPoint joinPoint){
System.out.println("-----------before开始执行--------------");
}
@After("point()")
public void after(JoinPoint joinPoint){
System.out.println("-----------after开始执行--------------");
}
@AfterReturning(pointcut = "point()",returning = "ret")
public void afterReturn(Object ret){
System.out.println("-----------afterReturn开始执行--------------");
}
@Around("point()")
public Object around(ProceedingJoinPoint pjp){
System.out.println("-----------环绕增强开始:--------------");
Object o = null;
try {
o = pjp.proceed();
System.out.println("-----------环绕增强结束:--------------");
}catch (Throwable e){
e.printStackTrace();
}
return o;
}
}
运行多次后的结果,增强了个寂寞,当然在继续执行的话还是会有别的顺序出现
将代码中的System.out.println换成log日志方式打印之后,就没有问题了
猜测是因为System.out.println的线程问题,因为有synchronized的存在,线程资源竞争,具体是不是这个原因暂时还不知道,如有大佬指教,不胜感激
本文地址:https://blog.csdn.net/u014608971/article/details/109987747
上一篇: list分组