2015-09-01 3 views
0

Я хотел бы иметь структуру каталогов, как так:Как настроить Spring для загрузки application.properties извне банки?

/Directory 
    - Application.jar 
    - application.properties 

Так что я могу изменить свойства без переупаковки и перераспределять (и вместо того, чтобы просто перезапустить банку). Как я могу выполнить это с помощью весенних аннотаций или классов конфигурации?

Я не прошу предоставить внешние ресурсы в моем веб-приложении, я также хочу изменить местоположение, откуда весна загружает файл application.properties.

+0

При использовании stackoverflow, если вы попробуете что-то перед публикацией. Тогда скажите, что вы пробовали, и где вы застряли. – CaringDev

+0

Возможный дубликат [Spring console app, load property file from outside of JAR] (http://stackoverflow.com/questions/13177064/spring-console-app-load-property-file-from-outside-of-jar) – CaringDev

ответ

2

Вы упоминаете банку, так что вы используете Spring Boot?

Если это так, внешние свойства application.properties в том же каталоге (структура, что и вы описали) переопределяют application.properties, упакованные внутри файла jar.

Затем, если у вас есть что-то вроде key=value в вашем приложении application.properties, вы можете ввести его в код @Value("${key}") String key.

Попробуйте, это просто сработает :)

+0

без application.properties в JAR будет вызывать исключение. Также требуется настроить рабочий каталог, чтобы файл свойств можно было найти на уровне = 0 (./application.properties) – robie2011

0

Возможно, вам захочется изучить PropertyPlaceholderExplorer класс весной. Этот класс предоставляет возможность доступа к файлу свойств, внешнему по отношению к вашему набору jar/war. В этом также есть небольшой хороший учебник по этому вопросу here.

0

Если вы начинаете использовать Spring Boot (на определенном этапе вы наверняка будете). вы получите мощный configuration externalization features.

С Spring Boot ваши приложения.properties автоматически загружаются в контекст Spring Boot, и вы можете использовать ${...} заполнители.

Вы можете использовать еще более современную функцию @ConfigurationProperties, чтобы сопоставить конфигурацию с POJO. Это POJO может даже быть подтверждено аннотациями проверки Java EE (например, @NotNull)

Смежные вопросы