Многомодульное приложение Spring с основным модулем - как включить application.yaml в подмодули

Структура моего многомодульного приложения выглядит так

|
|--- 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 для модуля, отвечающего за работу с файлами и т. Д.). Классы конфигурации внутри каждого подмодуля выглядят примерно так:

@Configuration
class Configuration1 {

    @Value("${property.from.main.module}")
    private String propertyFromMainModule;

    @Bean
    public Bean1 bean1() {
        // using propertyFromMainModule to create the bean
    }
    
}

но свойства из основного модуля не видны в подмодулях.

Я попытался определить beans в основном модуле, но тогда они не были видны в подмодулях.

есть идеи, как я могу с этим справиться и сделать свойства видимыми во всех модулях? Конечно, определение собственного application.yaml для каждого подмодуля не помогло.

0 ответов

Другие вопросы по тегам