Как наследовать application.properties с несколькими загрузочными модулями - PullRequest
1 голос
/ 25 сентября 2019

Я использую несколько модулей весенней загрузки, и я хочу наследовать application.properties от родительского.У меня есть родительский модуль: spring-ecommere-demo и подмодуль: модель, ядро ​​и безопасность.В родительских модулях я помещаю некоторые настройки jdbc, которые выглядят так:

application.properties (родительский модуль)

spring.datasource.url=jdbc:mysql://localhost:3306/BaoTrung
spring.datasource.username=root
spring.datasource.password=123456
spring.jpa.show-sql=true

А в безопасности подмодуля я определенную конфигурацию выглядит следующим образом:

application-security.properties (модуль безопасности)

app.jwtSecret= JWTSuperSecretKey
app.jwtExpirationInMs = 604800000

И конфигурация в приложении Spring Boot в модуле безопасности выглядит следующим образом:

@SpringBootApplication(scanBasePackages = "springecommeredemo")
@PropertySources({
        @PropertySource("application-security.properties")
})

Но когда я его запускаю, это вызывает у меня исключение

Описание:

Не удалось настроить атрибут DataSource: атрибут 'url' не указан, и встроенный источник данных не может быть настроен.

Причина: не удалось определить подходящий класс драйвера

Действие:

Примите во внимание следующее: Если вы хотите встроенную базу данных (H2, HSQL или Derby), установите ее напуть к классамЕсли у вас есть настройки базы данных для загрузки из определенного профиля, вам может потребоваться активировать его (в данный момент активны профили разработчика).

Это означает, что безопасность подмодуля не может наследовать свойства от родительского проекта.Как наследовать все свойства от родительского модуля.Поскольку я использую ту же базу данных, я не хочу, чтобы в моем проекте был дубликат config jdbc.Я хочу наследовать общие свойства. Пожалуйста, помогите

Ответы [ 2 ]

1 голос
/ 25 сентября 2019

Вам нужно добавить несколько Properties, к которым можно получить доступ в Spring, я добавил дублированную аннотацию для @PropertySource, так как до Java 8, если вам нужно было использовать несколько экземпляров одной и той же аннотации, их нужно было обернуть в контейнераннотаций.С Java 8 в этом больше нет необходимости, что позволяет получить более чистый и читаемый код.

@SpringBootApplication(scanBasePackages = "springecommeredemo")
@PropertySource("application.properties")
@PropertySource("application-security.properties")
0 голосов
/ 25 сентября 2019

Я нашел решение этого здесь: Maven Multi Module настаивает на дублировании источника данных application.properties в бизнес-модуле

Только создайте субмодуль: пример: server-config и запустите его.В подмодуле: security добавьте server-config в качестве зависимости и запустите его.Это работает для меня

...