Nano Hash - криптовалюты, майнинг, программирование

Как наследовать application.properties с весенней загрузкой нескольких модулей

Я использую весеннюю загрузку нескольких модулей и хочу наследовать 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")
})

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

Описание:

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

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

Действие:

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

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


  • Это было бы легко реализовать, если бы у вас был config-server, который предоставляет конфигурации для любого microservice, как в этом случае security, тогда он будет работать. Итак, что вы хотите сделать, я создам ответ лучше. 25.09.2019
  • @JonathanJohx спасибо, пожалуйста, помогите мне. Если я правильно понимаю, мне нужно создать подмодуль config-server и подключить его к безопасности? 25.09.2019
  • Используете ли вы micro-service свою архитектуру? правильно? 25.09.2019
  • @JonathanJohx Да. Правильно 25.09.2019

Ответы:


1

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

@SpringBootApplication(scanBasePackages = "springecommeredemo")
@PropertySource("application.properties")
@PropertySource("application-security.properties")
25.09.2019
  • но когда я помещаю @PropertySource(application.properties) в application.class в модуле безопасности, это выдает мне исключение: не удается найти application.properties в пути к классу 25.09.2019
  • @BaoTrungTran - вы сохранили свойства в самой папке src/main/resources? 25.09.2019
  • да. Я сохраняю application.properties в пути к классу с родительским (spring-ecommere-demo), а не вспомогательным модулем (безопасность) 25.09.2019

  • 2

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

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

    25.09.2019

    3

    Я использую весеннюю загрузку 2.5. Допустим, у меня есть общий модуль и модуль приложения, который использует общий модуль. Если я хочу получить доступ ко всем свойствам, определенным в общем файле свойств модуля, я добавлю следующее в начало файла свойств модуля приложения.

    spring.config.import=classpath:common-module.properties
    

    У вас может быть любое имя для этого файла свойств общего модуля.

    18.06.2021
    Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..