如何处理Sping Boot starter模块化Gradle构建中定义的Bean的缺失依赖项?

c9qzyr3d  于 2023-10-19  发布在  其他
关注(0)|答案(1)|浏览(93)

对于此演示:

  • 我在event-starter模块中定义了一个Bean作为Sping Boot Starter,我想在我的应用程序模块中使用它:据我所知,它在GreeterAutoConfiguration文件和resources/META-INF/spring.factories文件中有正确的配置,尽管过于简化。
  • 我的application模块中的build.gradle文件将event-starter作为依赖项拉入,如下所示:
implementation project(':event-starter')
  • 我同时使用io.spring.dependency-managementorg.springframework.boot:spring-boot-configuration-processor注解处理器。
  • 我的编译就像我期望的那样。

然而,当我实际 * 运行 * 应用程序时,我从starter模块中拉入的Bean似乎不能被Spring IoC容器所识别,我不知道为什么:

Field greeter in com.example.app.StarterApplication required a bean of type 'com.example.starter.Greeter' that could not be found.

The injection point has the following annotations:
    - @org.springframework.beans.factory.annotation.Autowired(required=true)

Action:

Consider defining a bean of type 'com.example.starter.Greeter' in your configuration.

我大致使用这两个教程[12]进行开发,这里是一个链接到突破性的演示:

任何帮助,以确定什么是遗漏/错误将不胜感激!

unguejic

unguejic1#

我提交了一个解决这个问题的演示,但总结一下:

  • 所需的bean并没有被Spring选中,它是在一个离散的包中。
  • 添加@SpringBootApplication(scanBasePackages = “com.example”),其中com.example是启动器和应用程序的父包,解决了这个问题。可以想象,这也可以是直接相邻的包。
  • 来自演示启动器bean的命令被提取,在应用程序中运行,并输出到日志中。

相关问题