Spring Boot имеет огромное число настроек, которые имеют вполне приемлемые значения по умолчанию. А чтобы изменить эти значения, необходимо использовать файлы конфигурации.
Файлы конфигурации
Конфигурация Spring Boot по умолчанию располагается в файлах application.properties или application.yml, которые могут располагаться в следующих местах:
- Каталог config текущего каталога
- Текущий каталог
- Пакет config в classpath
- Корень classpath
Файл может быть либо java properties файлом, либо YAML файлом. В любом случае в нём могут находиться параметры Spring Boot и их значения. Полный список параметров описан в документации Spring Boot.
Самая простая вещь, которую можно для примера сделать, это изменить настройки логирования. Допустим, если вы хотите сменить уровень логирования, просто допишите в application.properties следующую строку:
logging.level.org.springframework=DEBUG
Собственные переменные конфигурации
Кроме характерных для Spring Boot переменных конфигурации, можно задавать и собственные. Они могут иметь любое имя, любое значение и Spring Boot не будет делать каких-либо предположений о них или пытаться их использовать. Чтобы получить доступ к содержимому ваших конфигурационных переменных, необходимо использовать аннотацию @Value в бине.
@Component public class SomeService { @Value("${custom.config.variable}") private String myConfig; }
Смена конфигурационного файла
Файл конфигурации по умолчанию это удобно, но что если у вас будет более одного Spring Boot приложения? В этом случае можно явно задать, где нужно искать файл конфигурации, добавив аннотацию @PropertySource к классу приложения.
@PropertySource(value = "file:/etc/project/app.properties") public class Application { public static void main(final String[] args) { SpringApplication.run(Application.class, args); } }
Конфигурационные профили
Sprinb Boot поддерживает различные конфигурации в одном файле конфигурации. Например, чтобы не отклонятся от темы, вы можете использовать уровень логирования DEBUG при разработке, INFO при эксплуатации и FATAL при исполнении интеграционных тестов.Разные профили конфигурации могут быть заданы с использованием properties файлов и YAML файлов. Стоит отметить, что в YAML использовать профили удобнее:
logging: level: root: INFO spring: profiles: development logging: level: root: DEBUG spring: profiles: testing logging: level: root: FATAL
По умолчанию уровень логгирования будет INFO, при использовании профиля development — DEBUG и при использовании профиля testing — уровень FATAL. Активировать профиль можно с помощью переменной окружения spring.profiles.active или параметра приложения —spring.profiles.active В обоих случаях можно перечислять несколько профилей через запятую. В случае, если активные профили переопределяют значение одной и той же переменной, её значение будет взять из последнего профиля.