Структура моего многомодульного приложения выглядит так:
|
|--- module 1
|
|- Configuration1.java
|
|--- module 2
|
|- Configuration2.java
|
|--- mainModule
|
|- Application // holds main() and SpringApplication.run call
|- application.yaml
Идея состоит в том, что каждый подмодуль является независимой частью приложения и ничего не знает о внешнем мире. Только основной модуль включает в себя подмодули, и он отвечает только за запуск приложения.
Файл Gradle в основном модуле включает
implementation(
project(':module1'),
project(':module2'),
)
Каждый модуль определяет свои собственные bean-компоненты, которым необходимо ввести некоторые свойства (например, AWS имена корзин S3 для модуля, отвечающего за работу с файлами, и т. д. c.) Классы конфигурации в каждом подмодуле выглядят примерно так:
@Configuration
class Configuration1 {
@Value("${property.from.main.module}")
private String propertyFromMainModule;
@Bean
public Bean1 bean1() {
// using propertyFromMainModule to create the bean
}
}
, но свойства из основного модуля не видны в подмодулях.
Я пытался определить beans в основном модуле, но тогда они не были видны в подмодулях.
любая идея, как я могу с этим справиться и сделать свойства видимыми во всех модулях ? Конечно, определение собственного application.yaml для каждого подмодуля не помогло.