junior
Как устроена конфигурация в application.properties / application.yml?
Spring Boot автоматически загружает файл application.properties (или application.yml) из каталога src/main/resources.
Пример application.properties
server.port=8080
spring.application.name=my-app
# Подключение к БД
spring.datasource.url=jdbc:postgresql://localhost:5432/mydb
spring.datasource.username=admin
spring.datasource.password=${DB_PASSWORD}
# JPA / Hibernate
spring.jpa.hibernate.ddl-auto=validate
spring.jpa.show-sql=true
spring.jpa.open-in-view=false
# Логирование
logging.level.root=INFO
logging.level.com.example=DEBUG
Пример application.yml
server:
port: 8080
spring:
application:
name: my-app
datasource:
url: jdbc:postgresql://localhost:5432/mydb
username: admin
password: ${DB_PASSWORD}
jpa:
hibernate:
ddl-auto: validate
show-sql: true
open-in-view: false
Приоритет загрузки свойств (от низшего к высшему)
- Значения по умолчанию (
@Value("${prop:default}")) application.propertiesв JARapplication-{profile}.propertiesв JARapplication.propertiesвне JARapplication-{profile}.propertiesвне JAR- Аргументы командной строки (
--server.port=9090) - Переменные окружения (
SERVER_PORT=9090)
Типизированная конфигурация с @ConfigurationProperties
Пример
@Configuration
@ConfigurationProperties(prefix = "app.mail")
@Validated
public class MailProperties {
@NotBlank
private String host;
private int port = 587;
private String username;
// геттеры и сеттеры
}
На собеседовании: важно знать приоритет загрузки свойств и
@ConfigurationProperties. Частая ошибка – хранить пароли прямо вapplication.properties, которое попадает в Git. Используйте переменные окружения или Vault.