Spring - 如何将来自另一个模块的组件注入SpringBoot应用程序

时间:2018-06-02 19:39:25

标签: 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
)

在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}/")
}

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

  

com.demo.app.Application中构造函数的参数0需要一个bean   类型&#39; com.demo.shared.Address&#39;无法找到。

我错过了什么?

注意:我已经标记了Java,因为即使模块使用Kotlin,如果有人可以提供Java示例,我也可以移植它相对容易。

1 个答案:

答案 0 :(得分:2)

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

@ComponentScan(“com.in28minutes.springboot”)