【问题标题】:Debugging Spring autowiring failure for ApplicationContext调试 ApplicationContext 的 Spring 自动装配失败
【发布时间】:2015-10-22 14:20:03
【问题描述】:

我目前在 Spring Hell 中试图确定为什么 ApplicationContext 的 @Autowired 实例没有被注入或在某些 JUnit 测试的目标类中为空。引用 ApplicationContext 变量的类被注释为 @Component 并且同一包中的其他 @Component 类正在与不同的变量正确连接。我已经尝试添加 log4j 调试,但我最终得到了一个荒谬的输出量,甚至无法通过。

我想知道是否有人可以指出 Spring 包和执行自动扫描的类的方向,以便我可以尝试单步执行 Spring 代码并查看为什么该类被静默忽略。我还没有找到一个好的切入点来开始调试工作,我真的厌倦了尝试解决这个问题的尝试和错误。

任何建议表示赞赏。

【问题讨论】:

  • 发布一些代码。弹簧的东西非常防弹。你可能犯了一些或多或少明显的错误。
  • 谢谢,但我正在寻找一种调试方法,而不是关于使用 Spring 施放哪些咒语以使野兽高兴的建议。我所有的其他类都具有相同的格式并且可以正常工作,但是 ApplicationContext 注入根本没有发生。
  • 只是为了检查自己尝试在您的国际象棋中实现 ApplicationContextAware 接口。
  • 我已经这样做了,它也没有被调用。因此,为什么我要直接调试扫描。基本上同一个包中的类 A 和 B 都被注释为 Component 并且都使用了 Autowired,但只有没有 ApplicationContext 变量的类才能获得它的值。

标签: java spring debugging autowired applicationcontext


【解决方案1】:

这是一种解决方法,而不是完整的答案,因为我仍在寻找调试自动扫描的方法。但是,对于遇到这种情况的其他人,我最终将我的 ApplicationContext 保留在稍后需要它的类中的静态变量中。

在调试和调试时,我注意到 ApplicationContextAware 接口中的 setApplicationContext 会被调用,但只是在我的 JUnit 测试开始时才会被调用,所以我保留了它以供以后使用。这有点杂乱无章,但除非有一个好的解决方案,否则这是我现在选择的。我们会看看它是否会咬我。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-19
    • 1970-01-01
    • 2018-03-07
    • 2018-02-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多