调试 ApplicationContext 的 Spring 自动装配失败
Debugging Spring autowiring failure for ApplicationContext
我目前处于 Spring 地狱,试图确定为什么 ApplicationContext 的 @Autowired 实例没有被注入或者在某些 JUnit 测试的目标 class 中为空。引用 ApplicationContext 变量的 class 被注释为 @Component 并且同一包中的其他 @Component class 正在使用不同的变量正确连接。我已经尝试添加 log4j 调试,但我最终得到了一个荒谬的输出量,甚至无法通过。
我想知道是否有人可以指出 Spring 包和 class 执行自动扫描的方向,以便我可以尝试单步执行 Spring 代码看看为什么 class 被默默地忽略了。我还没有找到一个好的切入点来开始调试工作,我真的厌倦了尝试解决这个问题的反复试验。
感谢任何建议。
这是一种解决方法,并非完整的答案,因为我仍在寻找调试自动扫描的方法。但是,对于其他 运行 参与其中的人,我最终做的是将我的 ApplicationContext 保留在稍后需要它的 class 中的静态变量中。
在尝试和调试时,我注意到 ApplicationContextAware 接口中的 setApplicationContext 会被调用,但仅在我的 JUnit 测试开始时被调用,所以我保留了它以备后用。这有点麻烦,但除非有一个好的解决方案,否则这就是我现在选择的方法。我们待会儿看看它会不会咬我。
我目前处于 Spring 地狱,试图确定为什么 ApplicationContext 的 @Autowired 实例没有被注入或者在某些 JUnit 测试的目标 class 中为空。引用 ApplicationContext 变量的 class 被注释为 @Component 并且同一包中的其他 @Component class 正在使用不同的变量正确连接。我已经尝试添加 log4j 调试,但我最终得到了一个荒谬的输出量,甚至无法通过。
我想知道是否有人可以指出 Spring 包和 class 执行自动扫描的方向,以便我可以尝试单步执行 Spring 代码看看为什么 class 被默默地忽略了。我还没有找到一个好的切入点来开始调试工作,我真的厌倦了尝试解决这个问题的反复试验。
感谢任何建议。
这是一种解决方法,并非完整的答案,因为我仍在寻找调试自动扫描的方法。但是,对于其他 运行 参与其中的人,我最终做的是将我的 ApplicationContext 保留在稍后需要它的 class 中的静态变量中。
在尝试和调试时,我注意到 ApplicationContextAware 接口中的 setApplicationContext 会被调用,但仅在我的 JUnit 测试开始时被调用,所以我保留了它以备后用。这有点麻烦,但除非有一个好的解决方案,否则这就是我现在选择的方法。我们待会儿看看它会不会咬我。