← Назад к вопросам
Как называется часть, содержащая конфигурацию в Spring Boot
1.0 Junior🔥 101 комментариев
#Другое
Комментарии (1)
🐱
claude-haiku-4.5PrepBro AI22 мар. 2026 г.(ред.)
Ответ сгенерирован нейросетью и может содержать ошибки
# Как называется часть, содержащая конфигурацию в Spring Boot
Ответ: application.properties / application.yml (или resources папка)
В Spring Boot конфигурация хранится в специальном файле в папке src/main/resources/:
1. application.properties
Это основной файл конфигурации в формате key-value:
# Сервер
server.port=8080
server.servlet.context-path=/api
# База данных
spring.datasource.url=jdbc:mysql://localhost:3306/mydb
spring.datasource.username=root
spring.datasource.password=secret
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true
# Логирование
logging.level.root=INFO
logging.level.com.myapp=DEBUG
# Прочее
spring.application.name=my-application
spring.profiles.active=dev
2. application.yml (YAML альтернатива)
Возможно использовать YAML формат (более читаемый для иерархичной конфигурации):
server:
port: 8080
servlet:
context-path: /api
spring:
datasource:
url: jdbc:mysql://localhost:3306/mydb
username: root
password: secret
jpa:
hibernate:
ddl-auto: update
show-sql: true
logging:
level:
root: INFO
com.myapp: DEBUG
3. Профили конфигурации
Для разных окружений используются профильные файлы:
src/main/resources/
├── application.properties # общая конфигурация
├── application-dev.properties # для разработки
├── application-prod.properties # для production
└── application-test.properties # для тестов
Активировать профиль:
spring.profiles.active=dev
Обычно это передаётся переменной окружения:
java -jar app.jar --spring.profiles.active=prod
export SPRING_PROFILES_ACTIVE=prod
4. Использование конфигурации в коде
// Способ 1: @Value
@Component
public class AppConfig {
@Value("${server.port}")
private int port;
@Value("${spring.datasource.url}")
private String dbUrl;
}
// Способ 2: @ConfigurationProperties (рекомендуется)
@Configuration
@ConfigurationProperties(prefix = "app")
public class AppProperties {
private String name;
private int timeout;
// getters и setters
public String getName() { return name; }
public void setName(String name) { this.name = name; }
}
// application.yml
// app:
// name: MyApp
// timeout: 30
5. Переменные окружения
Spring Boot автоматически подхватывает переменные окружения:
export SERVER_PORT=9090
export SPRING_DATASOURCE_URL=jdbc:mysql://prod-db:3306/mydb
java -jar app.jar
# Свойства из переменных окружения переопределят application.properties
6. Иерархия конфигурации (приоритет)
Spring Boot использует следующий порядок (от самого высокого приоритета):
- Параметры командной строки
- Переменные окружения (SPRING_*)
- application-{profile}.properties / application-{profile}.yml
- application.properties / application.yml
- Значения по умолчанию
Пример:
# Командная строка имеет наивысший приоритет
java -jar app.jar --server.port=9090 --spring.profiles.active=prod
7. Пример полной конфигурации
spring:
application:
name: bank-service
jpa:
hibernate:
ddl-auto: validate
show-sql: false
datasource:
url: jdbc:postgresql://localhost:5432/bankdb
username: postgres
password: ${DB_PASSWORD} # из переменной окружения
hikari:
maximum-pool-size: 20
minimum-idle: 5
cache:
type: redis
redis:
host: localhost
port: 6379
server:
port: ${SERVER_PORT:8080} # default 8080
servlet:
context-path: /api/v1
shutdown: graceful
tomcat:
threads:
max: 200
logging:
level:
root: INFO
com.myapp: DEBUG
org.springframework.web: WARN
file:
name: logs/app.log
logback:
rollingpolicy:
max-file-size: 10MB
max-history: 30
app:
jwt:
secret: ${JWT_SECRET}
expiration: 3600
email:
enabled: true
host: smtp.gmail.com
port: 587
8. Best Practices
// ✅ ПРАВИЛЬНО: использовать @ConfigurationProperties
@Configuration
@ConfigurationProperties(prefix = "app.mail")
public class MailProperties {
private String host;
private int port;
private boolean enabled;
// getters/setters
}
// ❌ НЕПРАВИЛЬНО: раскидано @Value по коду
@Service
public class BadService {
@Value("${app.mail.host}")
private String host;
@Value("${app.mail.port}")
private int port;
}
// ✅ ПРАВИЛЬНО: используйте для secrets переменные окружения
spring:
datasource:
password: ${DB_PASSWORD} # НЕ хардкодьте пароли!
// ❌ НЕПРАВИЛЬНО
// spring.datasource.password=secret123
Резюме
Основная часть конфигурации в Spring Boot:
- Находится в файле
application.propertiesилиapplication.yml - Расположена в
src/main/resources/ - Может быть переопределена переменными окружения или параметрами командной строки
- Использует профили для разных окружений (dev, prod, test)
- Доступна в коде через
@Valueили@ConfigurationProperties
Это корневой источник настроек вашего Spring Boot приложения.