Spring - 如何将组件从另一个模块注入到 SpringBoot 应用程序中

ser*_*0ne 4 java spring kotlin

在我的项目中,我有两个模块:

  • com.demo.shared
  • com.demo.app

在 com.demo.shared 中我有一个组件

@Component
class Address(
    @Value("\${config.address.host}") val host: String,
    @Value("\${config.address.port}") val port: Int
)
Run Code Online (Sandbox Code Playgroud)

在 com.demo.app 中,我想让 Spring 的 IoC 容器注入组件

@SpringBootApplication
class Application(address: Address) {
    companion object {
        @JvmStatic
        fun main(args: Array<String>) {
            SpringApplication.run(Application::class.java, *args)
        }
    }

    private val client: HttpClient("http://${address.host}:${address.port}/")
}
Run Code Online (Sandbox Code Playgroud)

当我运行该应用程序时,我收到此错误:

com.demo.app.Application 中构造函数的参数 0 需要类型为“com.demo.shared.Address”的 bean,但无法找到。

我缺少什么?

注意:我标记了 Java,因为即使模块使用 Kotlin,如果有人可以提供要做什么的 Java 示例,我将能够相对轻松地移植它。

Jon*_*her 7

看起来你只需要添加组件扫描注释:http://www.springboottutorial.com/spring-boot-and-component-scan

\n\n

@ComponentScan(\xe2\x80\x9ccom.in28minutes.springboot\xe2\x80\x9d)

\n