Когда следует использовать Java Configuration в Spring?

«Когда следует использовать Java Configuration в Spring?» — вопрос из категории Spring, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Java Configuration (конфигурация через аннотации и классы) предпочтительнее XML в современных Spring-приложениях в следующих случаях:

  1. Типобезопасность и проверка на этапе компиляции. Компилятор Java проверяет корректность ссылок на бины и их типы.
  2. Сложная или условная логика инициализации. Конфигурация может использовать ветвление (if/else), циклы, вызовы методов и другие конструкции Java.
  3. Удобство рефакторинга и навигации. Современные IDE могут легко находить использование бинов, переименовывать их и проверять зависимости.
  4. Конфигурация в функциональном стиле. Особенно удобно для настройки компонентов, таких как Spring Security, где можно использовать лямбда-выражения.

Пример базовой конфигурации:

@Configuration
public class AppConfig {
    @Bean
    public DataSource dataSource() {
        DriverManagerDataSource ds = new DriverManagerDataSource();
        ds.setUrl("jdbc:h2:mem:testdb");
        ds.setUsername("sa");
        return ds;
    }
}

Примечание: Гибридный подход (Java Config + XML) иногда используется для постепенной миграции legacy-кода.