Java Configuration
Конфигурация контейнера обычным Java-кодом
Не каждый bean удобно находить через Component Scanning. Иногда класс находится в сторонней библиотеке, требует параметров при создании или нужен полный контроль над тем, какой объект попадёт в контейнер. Для таких случаев Spring поддерживает Java Configuration.
@Configuration
class AppConfig {
@Bean
Clock clock() {
return Clock.systemUTC();
}
@Bean
TokenService tokenService(Clock clock) {
return new TokenService(clock);
}
}
Класс с @Configuration содержит методы конфигурации.
Метод с @Bean описывает объект, который Spring должен зарегистрировать в контексте.
Возвращаемое значение становится bean, а имя метода по умолчанию используется как его имя.
Параметр Clock clock во втором методе — это зависимость.
Spring найдёт подходящий bean и передаст его при создании TokenService.
Так конфигурация остаётся декларативной: мы описываем связи, а порядок сборки определяет контейнер.
Когда выбирать Java Configuration
- нужно добавить в контейнер объект класса, который нельзя аннотировать;
- создание объекта требует явной настройки или фабричного метода;
- хочется видеть состав инфраструктурных beans в одном месте.
Component Scanning и
@Bean не конкурируют.
В одном приложении обычно используются оба подхода: свои сервисы удобно находить автоматически,
а инфраструктурные объекты — описывать явно.
Проверь себя
Разбор задания
Ментор знает решение и поможет тебе прийти к нему самостоятельно
Войди, чтобы использовать Ментора
Ментор учитывает текущую задачу и историю диалога.
Войти
Проверь важные нюансы и ответ после собственной попытки.
Войди, чтобы посмотреть решение
Решение и разбор доступны после авторизации.
Войти