Ответ
Java-конфигурация (использующая аннотации @Configuration, @Bean) стала стандартом в современных Spring-приложениях, вытесняя XML, благодаря следующим преимуществам:
Ключевые преимущества Java-конфигурации:
- Типобезопасность: Ошибки в именах бинов или классах обнаруживаются на этапе компиляции, а не во время выполнения приложения.
- Поддержка рефакторинга: IDE могут автоматически переименовывать классы и методы, на которые ссылается конфигурация.
- Лучшая читаемость и навигация: Конфигурация — это код на Java, который можно легко читать, искать по ссылкам и понимать.
- Мощь языка Java: Можно использовать условия, циклы, вызовы методов и всю логику Java для динамического определения бинов.
- Упрощённая конфигурация: Аннотации
@ComponentScan,@PropertySourceи автоконфигурация Spring Boot значительно сокращают объём явной конфигурации.
Пример Java-конфигурации:
@Configuration
@PropertySource("classpath:app.properties")
@ComponentScan("com.example.service")
public class AppConfig {
@Value("${db.url}")
private String dbUrl;
@Bean
public DataSource dataSource() {
return new DriverManagerDataSource(dbUrl);
}
@Bean
@Profile("prod") // Бин создаётся только для профиля "prod"
public AdvancedService advancedService() {
return new AdvancedService();
}
}
XML-конфигурация теперь считается устаревшим подходом для новых проектов, хотя и поддерживается для обратной совместимости.