Ответ
Java Configuration (конфигурация через аннотации и классы) предпочтительнее XML в современных Spring-приложениях в следующих случаях:
- Типобезопасность и проверка на этапе компиляции. Компилятор Java проверяет корректность ссылок на бины и их типы.
- Сложная или условная логика инициализации. Конфигурация может использовать ветвление (
if/else), циклы, вызовы методов и другие конструкции Java. - Удобство рефакторинга и навигации. Современные IDE могут легко находить использование бинов, переименовывать их и проверять зависимости.
- Конфигурация в функциональном стиле. Особенно удобно для настройки компонентов, таких как 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-кода.