Ответ
Spring Boot предлагает гибкую модель конфигурации "из коробки". Основные аспекты:
1. Основные файлы конфигурации:
Настройки определяются в application.properties или application.yml с автоматическим связыванием (binding).
# application.yml
server:
port: 8081
servlet:
context-path: /api
spring:
datasource:
url: jdbc:postgresql://localhost:5432/mydb
username: admin
password: secret
jpa:
hibernate:
ddl-auto: validate
show-sql: true
2. Профили (Profiles): Разделение конфигурации для разных сред (dev, test, prod).
@Configuration
@Profile("dev")
public class DevConfig {
// Бинды только для среды разработки
}
Активация: --spring.profiles.active=dev,debug
3. Типобезопасная конфигурация с @ConfigurationProperties:
@ConfigurationProperties(prefix = "app.mail") // Связывает свойства с префиксом app.mail
@Data // Lombok для геттеров/сеттеров
public class MailProperties {
private String host = "smtp.default.com"; // Значение по умолчанию
private int port;
private String from;
}
4. Автоконфигурация (Auto-Configuration):
Spring Boot автоматически настраивает бины на основе classpath. Например, наличие spring-boot-starter-data-jpa и драйвера БД автоматически настраивает DataSource и JpaTransactionManager.
5. Внешняя конфигурация (Externalized Configuration): Приоритет источников конфигурации (от высшего к низшему):
- Аргументы командной строки (
--server.port=9090). - Переменные окружения (
SPRING_DATASOURCE_URL). - Файлы конфигурации (
application-{profile}.yml).
6. Другие часто конфигурируемые компоненты:
- Логирование: Через
logback-spring.xmlили настройкиlogging.level.*. - Безопасность: Настройка Spring Security (правила доступа, провайдеры аутентификации).
- Кеширование: Включение и настройка (например, Redis, Caffeine).
- Мониторинг и метрики: Использование Spring Boot Actuator и интеграция с Prometheus/Grafana.