106_整理Spring Boot单元测试Around多次执行问题
场景
使用Spring AOP机制定义实现公共日志处理服务,单元测试过程中发现日志被重复打印。
分析
从业务日志处理服务开始断点调试AOP处理逻辑,确认业务日志处理逻辑的确会被执行两次,此处封装的拦截器实例主要责任是建立切入点、连接点、目标实例、通知的关联关系,构造拦截器匹配实例组并依次执行触发通知逻辑。
可以发现对应的拦截器组中存在2个相同行为的AspectJAroundAdvice实例,
解决
跟踪Bean加载和构造逻辑发现自定义的aop-bean.xml资源描述文件被重复加载,这样对应切点通知实例创建了两个,分析确定在单元测试入口处重复引用了
总结
- 对Spring Boot 测试逻辑执行流程理解有误