Задать вопрос
azerphoenix
@azerphoenix
Java Software Engineer

Почему Spring игнорирует кофигурации properties файлов профилей?

Здравствуйте!
Я раньше уже задавал этот вопрос, но к сожалению до сих пор не нашел ответа.
Старый вопрос - Как разобраться в профилях Spring?

Вкратце:
- Собрал проект из https://start.spring.io/ и импортировал в intellij idea.
- создал 2 доп. properties файла application-production.properties & application-development.properties. Оба файла лежат в resources на уровне с файлом application.properties
- В файл application.properties добавил:
spring.profiles.active=development
- В файл application-development.properties добавил:
server.port=7777
spring.mail.host=smtp.yandex.ru
spring.mail.username=mail@example.com
spring.mail.password=12345
spring.mail.port=465
spring.mail.protocol=smtps
mail.debug=true

- Создал обычный java файл для конфигурации почты и импортировал значения строк при помощи @Value.
Например,
@Value("${spring.mail.host}")
    private String host;

Запускаю приложение и получаем исключение:
Injection of autowired dependencies failed; nested exception is java.lang.IllegalArgumentException: Could not resolve placeholder 'spring.mail.host' in value "${spring.mail.host}"


Intellij "видит" значения из полей, так как автоматически подставляет их в @Value.
Только, если добавить конфиги в основной файл, то он сможет корректно запустить приложение.

"Включать" профили в intellij пробовал следующими способами:
1) строка в файле application.properties (см. выше)
2) ссылка change profiles отображаемая в Intellij IDEA (в классе TestApplication)
5c265e61c611f028574165.png
3) передача названия профиля в конфигурацию приложения
5c265e83b3689849737189.png

Заранее признателен за помощь!

P.S. Нашел следующие источники с аналогичными "проблемами".
https://stackoverflow.com/questions/32861600/how-t...
https://www.jetbrains.com/help/idea/spring-support.html

Конфигурация сделанная intellij по дефолту:
5c266ca7b59b4774407578.png
  • Вопрос задан
  • 3586 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
Попробуйте использовать YAML и поместить все профили в одном файле, вот так:

# application.yml

spring.profiles.active: development

---

spring:
  profiles: development

server.port: 7777
spring.mail.host: smtp.yandex.ru
spring.mail.username: mail@example.com
spring.mail.password: 12345
spring.mail.port: 465
spring.mail.protocol: smtps
mail.debug: true
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы