标准答案

  1. 先打印实际 Bean 类型和代理类型,确认调用对象来自容器。
  2. 在事务边界内执行可观察的数据库写入,再用不同异常和调用方式比较结果。
  3. 逐项改变注入方式、异常捕获、传播行为和数据源,定位是哪一个边界改变行为。
  4. 把验证结果写成契约或测试,防止后续重构再次绕过代理。

题目解析

最小复现要固定一个 Bean、一个调用路径、一个异常和一个可观察的数据库写入,先证明代理是否存在,再逐项改变自调用、异常、传播和数据源配置。

日志只能说明代码走到某个位置,提交后的数据、事务状态和实际 Bean 类型才是行为证据。代理、事务和连接问题要用最小实验把边界拆开。

测试结果还要标注 Spring、JDK、数据库驱动和生产配置版本。复现验证的是一个具体边界,不能未经确认就推广到所有环境。

常见误区

  • 误区:在完整业务系统中同时修改十个配置。改正:一次只改变一个边界,保持最小可复现和可回滚。
  • 误区:只看日志不核对提交后的数据。改正:同时验证代理类型、事务日志和数据库最终状态。
  • 误区:把测试环境行为直接推断为生产。改正:记录版本、数据源、代理和配置差异,在接近生产的环境复验。

作者信息