Что важно знать
- Порядок источников: переменные окружения переопределяют файлы.
- Профили — разные настройки для окружений.
@ConfigurationPropertiesлучше россыпи@Value.- Секреты — из окружения или хранилища, не в репозитории.
ApplicationContext, профили, properties, @ConfigurationProperties.
@ConfigurationProperties лучше россыпи @Value.Практика. Вынести все настройки сервиса в application.yml с профилями dev и prod.
Практика. Описать настройки внешней интеграции классом @ConfigurationProperties с валидацией и тестом.
Войдите, чтобы пройти тест: сданный тест отмечает тему пройденной на карте и в ИПР.
ApplicationContext — контейнер бинов: создаёт их, внедряет зависимости, управляет жизненным циклом и даёт инфраструктуру — события, свойства, профили, ресурсы.
Полный разборПрофили включают разные бины и свойства под окружение: @Profile("dev") на бине, application-prod.yml для свойств, активация через spring.profiles.active.
Полный разборSingleton создаётся один раз, и prototype внедряется в него один раз — «застывает». Новый экземпляр при каждом использовании дают ObjectProvider<T>.getObject(), @Lookup-метод или scoped proxy.
Полный разборОдин экземпляр на контекст — не на всю JVM, как классический паттерн. Два контекста — два экземпляра; можно создать объект класса и вручную через new.
Полный разборSpring Boot собирает свойства из многих источников — application.yml, профильных файлов, переменных окружения, аргументов командной строки — в единое Environment. Читают их через @Value (точечно) или @ConfigurationProperties (группой в объект).
Полный разбор@ConfigurationProperties связывает целый префикс настроек с типизированным объектом: вложенные структуры, списки, Duration и DataSize, валидация при старте, подсказки в IDE. @Value — для одиночных значений.
Полный разборПо умолчанию singleton — один экземпляр на контейнер, общий для всех потоков. Ещё: prototype (новый на каждый запрос к контейнеру), веб-scope request, session, application, websocket.
Полный разбор@Autowired — точка внедрения: контейнер находит бин по типу и подставляет. Несколько кандидатов — уточняют @Primary, @Qualifier или имя.
Полный разборСобытия приложения и @EventListener, FactoryBean, Aware-интерфейсы, порядок бинов (@Order/@DependsOn) и отложенное получение (ObjectProvider/@Lazy/@Lookup).
BeanFactory против ApplicationContext, способы конфигурации, @Configuration full/lite, профили и Environment, @Conditional.
После собеседования sotto разбирает разговор: оценка, каждый вопрос — хорошо, частично или слабо, чего не хватило в ответе и над чем поработать к следующему разу. Первые 30 минут бесплатно.