[Java, Spring Boot, Maven] Привязка параметров yaml-файла к Java-объекту с разделением на профили.
КОНТЕКСТ
- Java
- Spring Boot
- Maven
ЦЕЛЬ
Создать Java-объект и привязать к нему параметры из конфигурационного yaml-файла так, чтобы параметры зависели от выбранного профиля.
Инструкция
Чтобы внедрить профили в Ваш проект, нужно добавить следующий блок в pom.xml:
...
</properties>
<profiles>
<profile>
<id>dev</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<profile>dev</profile>
</properties>
</profile>
<profile>
<id>prod</id>
<properties>
<profile>prod</profile>
</properties>
</profile>
</profiles>
<dependencies>
...
Обратите внимание - в блоке properties мы определили переменную profile.
Теперь в файле application.yml мы сможем на нее сослаться таким образом:
application.yml
...
spring:
profiles:
active: @profile@
Таким образом мы привязали maven-профили к спрингу.
После этого можно создать два конфигурационных файла:
application-dev.yml
application-prod.yml
В этих файлах мы можем определить любые собственные параметры
Например,
application-dev.yml
...
personal:
data:
firstname: Alex Dev
lastname: Kuzmin
application-prod.yml
...
personal:
data:
firstname: Alex Prod
lastname: Kuzmin
Непосредственно привязка этих параметров к полям объекта выполняется очень просто - с помощью анотации @Value:
@Component
public class SomeBean {
@Value("${personal.data.firstname}")
private String firstName;
@Value("${personal.data.lastname}")
private String lastName;
}
Готово! Для переключения профилей собираем проект с ключом -P, например:
mvn clean install -Pprod
Либо в IntelliJ выбираем нужный профиль на панели справа и запускаем по очереди
- clean
- install
В зависимости от выбранного профиля в переменные будут подтянуты нужные значения.