【问题标题】:"A component required a bean of type", but which one?“一个组件需要一个类型的 bean”,但是哪一个呢?
【发布时间】:2020-01-15 02:28:01
【问题描述】:

如标题所述,我有一个A component required a bean of type [SomeBean] 错误,我想知道哪个组件需要[SomeBean]。有没有办法获取更多关于哪个 bean 需要缺少的信息?

另外,为什么我会收到此错误消息?我很确定有时丢失的 bean 会生成更清晰的消息,说明哪些 bean 需要丢失的。

为什么要问:

我正在尝试制作一个类似于另一个(工作)应用程序的 spring 应用程序,并使用许多类似的 bean。但是我在跟踪 bean 依赖项时遇到了麻烦。所以我删除了工作应用程序的一个 bean 并运行它,以便了解该组件的使用位置和方式。

=> 所以,总的来说,我正在寻找在复杂上下文中跟踪 bean 依赖关系的好方法。

有时我的 IDE(intellij 终极 2019)会给我一些信息,但这里没有。可能是因为依赖项跨越了几个包,其中许多在应用程序代码之外,并且使用了 AutoConfiguration。不知道...

如果我使用弹簧图,它会生成一些不太可读的东西(太卑鄙的 bean)。该图更多地是按提供的位置构建的已找到 bean 的列表,而不是 bean 依赖关系图:我的应用程序列出了它提供的 bean,而 autoConfig 列出了它提供的 bean。但它并没有告诉 autoConf 的哪个 bean 正在使用我的应用程序提供的哪个 bean。或者我只是不明白它是如何工作的。

【问题讨论】:

  • 注意:我想也许 spring 没有告诉我哪个 bean 需要丢失的,因为失败的代码实际上是在 spring 上下文中进行直接查找 (context.getBean)

标签: java spring dependencies


【解决方案1】:

默认日志配置会在消息写入时将消息回显到控制台。默认情况下,会记录 ERROR-level、WARN-level 和 INFO-level 消息。您还可以通过使用--debug 标志启动应用程序来启用“调试”模式。

因此,确实,您应该启用该调试模式以查看有关您的错误的更详细的日志信息,这似乎是缺少必需的 bean 依赖项。

Spring Loggin中查看更多详细信息

【讨论】:

  • 德克萨斯州。我只是在我的application.yml 中添加了debug: true。我打印了很多东西,靠近加载的 bean,以及错误的堆栈跟踪。
猜你喜欢
  • 2020-04-17
  • 1970-01-01
  • 2020-09-10
  • 2017-08-22
  • 2017-10-05
  • 2018-09-03
  • 1970-01-01
  • 2019-02-18
  • 1970-01-01
相关资源
最近更新 更多