Java Разработка | Spring Boot Backend & Architecture. Программирование на Джава для Developer. IT Собеседования, Алгоритмы и Coding задачи. Уроки и курсы для роста в Tech.

@bookjava
Фото 🎛 Конфигурация Spring Boot: YAML, Профили и Секреты Хардкодить настройки (порты, пароли, URL-ы) в Java-коде - это моветон. Если вам нужно поменять порт сервера, вы не должны перекомпилировать приложение. Spring Boot следует принципу: "Код отдельно, настройки отдельно". 1️⃣ Properties vs YAML По умолчанию Spring создает application.properties. Это старый формат (ключ=значение). Весь мир переходит на YAML (.yaml или .yml). Он читабельнее и поддерживает иерархию. Было (.properties): spring.datasource.url=jdbc:postgresql://localhost/db spring.datasource.username=admin server.port=8080 Стало (.yaml): server: port: 8080 spring: datasource: url: jdbc:postgresql://localhost/db username: admin Меньше дублирования, глазам приятнее. 2️⃣ Как достать настройки в коде? Способ А: Простой (@Value) Подходит для точечных настроек. @Value("${server.port}") private int port; Способ Б: Профессиональный (@ConfigurationProperties) Если настроек много (например, настройки почты или API), лучше собрать их в отдельный класс. Это дает типизацию и проверку данных! @ConfigurationProperties(prefix = "mail") public record MailConfig(String host, int port, String username) {} Теперь вы просто внедряете MailConfig в свои сервисы, как обычный бин. 3️⃣ Профили (Profiles) - Киллер-фича На локальной машине у вас H2 база данных, а на продакшене - PostgreSQL. Как не менять конфиги вручную? Используйте Профили. Вы создаете несколько файлов рядом с основным application.yaml: 🔴 application-dev.yaml (для разработки) 🔴 application-prod.yaml (для боевого сервера) В основном файле вы указываете, какой профиль активен по умолчанию: spring: profiles: active: dev # По умолчанию грузим dev-настройки А при запуске на сервере вы просто передаете флаг, и Spring подхватит нужный файл, перетерев дефолтные настройки: java -jar app.jar -Dspring.profiles.active=prod 4️⃣ Секреты (Никаких паролей в Git!) Самая страшная ошибка - закоммитить application-prod.yaml с паролем от боевой БД в репозиторий. ☠️ Правило: В файлах храним только дефолтные/безопасные значения. Реальные пароли передаем через Переменные Окружения (Environment Variables). Spring Boot имеет строгий приоритет загрузки. Переменные окружения OS имеют более высокий приоритет, чем файлы. 🔴 В файле: spring.datasource.password=secret 🔴 В переменной ОС: SPRING_DATASOURCE_PASSWORD=SuperSecurePass123 Spring увидит переменную в системе и проигнорирует то, что написано в файле. Ваш секрет в безопасности. 🔥 Итог 1. Используйте YAML вместо properties. 2. Группируйте настройки через @ConfigurationProperties. 3. Разделяйте среды через Профили (dev, test, prod). 4. Никогда не храните боевые пароли в файлах. Используйте ENV vars. #SpringBoot #Configuration #YAML #DevOps #BestPractices 👉 @BookJava
Если у вас установлено приложение,
вы можете сразу перейти в канал