Какой тип конфигурации рекомендуется убрать из современного Spring-приложения?

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

Ответ

В современных Spring-приложениях рекомендуется отказаться от XML-конфигурации в пользу конфигурации на основе Java-кода (JavaConfig) или аннотаций.

Почему?

  • Читаемость и поддержка: Java-код типобезопасен, его проще рефакторить и понимать.
  • Меньше шаблонного кода: Аннотации (@Component, @Service, @Autowired) делают конфигурацию декларативной.
  • Лучшая интеграция с IDE: Поддержка навигации, автодополнения и проверки типов.

Пример JavaConfig (@Configuration):

@Configuration
@ComponentScan("com.example")
public class AppConfig {
    @Bean
    public MyService myService(MyRepository repository) {
        return new MyServiceImpl(repository);
    }
}

Пример конфигурации через аннотации:

@Service
public class MyServiceImpl implements MyService {
    private final MyRepository repository;

    @Autowired // Опционально в Spring 4.3+
    public MyServiceImpl(MyRepository repository) {
        this.repository = repository;
    }
}

XML-конфигурация (applicationContext.xml) считается устаревшим подходом для новых проектов, но может сохраняться в legacy-системах.