Spring Boot, не может прочитать application.properties из jar зависимостей - PullRequest
0 голосов
/ 27 марта 2020

У меня есть этот сценарий. Я разрабатываю службу REST с помощью Spring Boot, и у меня есть jar зависимостей, который является еще одним проектом Spring Boot, который я включил в качестве зависимости, используя этот метод:

https://docs.spring.io/spring-boot/docs/2.1.4.RELEASE/maven-plugin/examples/repackage-classifier.html

Все отлично компилируется, и я могу вызывать классы из jar зависимостей. Внутри кода в банке зависимостей я использую аннотации @Value для чтения значений из application.properties проекта «папа», но всегда возвращает ноль.

Если я пытаюсь прочитать то же значение из проекта папа это работает.

Я удалил оригинальный файл application.properties внутри jar зависимостей, чтобы избежать странного двойного файла свойств, но ничего не изменилось.

Есть идеи, как решить эту проблему?

Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 28 марта 2020

решаемая. Спасибо за ваш ответ mnd!

Я решил проблему и напишите здесь решение, может быть, оно могло бы пригодиться кому-то еще.

Прежде всего, я сделал глупую ошибку, я забыл положить боб под @Autowired! : -D

Но есть еще одна вещь, которую нужно сделать, чтобы родительский проект автоматически связывал бины зависимостей, мы должны добавить его пакеты с помощью @ComponentScan в классе Config родительского проекта.

После этого все свойства родительского проекта правильно вводятся в bean-компоненты зависимостей.

Спасибо.

С наилучшими пожеланиями.

0 голосов
/ 27 марта 2020

Я могу вспомнить два варианта, которые вы можете попробовать.

# 1

Попробуйте включить родительский элемент application.properties в аннотацию @PropertySources. Возможно, вам придется убедиться, что файл свойств отличается между двумя приложениями. Более подробно это описано в этом ответе .

# 2

Установите в родительском проекте класс свойств конфигурации, который вы можете добавить в свое приложение, и получите необходимые properties.

Родительский проект может иметь такой класс:

@Data // Part of the Lombok project, creates the getters/setters automatically
@ConfigurationProperties(prefix = "application.specific.prefix")
public class ApplicationConfig {
    private String someValue;
    private Integer importantNumber;
}

Ваш application.properties будет выглядеть следующим образом:

application.specific.prefix.some-value=Spring Boot is great!
application.specific.prefix.important-number=42

В ваших классах, контролируемых Spring Вы можете включить этот ресурс в:

@Autowired
private ApplicationConfig applicationConfig;

И затем вы можете вызвать нужные вам свойства:

applicationConfig.getSomeValue();

Baeldung имеет полезное руководство по @ConfigurationProperties

...