Enterprise Средний

Spring XML-конфигурация бинов vs. на основе аннотаций

Замените многословные Spring XML-определения бинов лаконичной конфигурацией на основе аннотаций с Spring Boot.

✕ Spring (XML)
<!-- applicationContext.xml -->
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd">

    <bean id="userRepository"
          class="com.example.UserRepository">
        <property name="dataSource" ref="dataSource"/>
    </bean>

    <bean id="userService"
          class="com.example.UserService">
        <property name="repository" ref="userRepository"/>
    </bean>

</beans>
✓ Spring Boot 3+
@SpringBootApplication
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

@Repository
public class UserRepository {
    private final JdbcTemplate jdbc;

    public UserRepository(JdbcTemplate jdbc) {
        this.jdbc = jdbc;
    }
}

@Service
public class UserService {
    private final UserRepository repository;

    public UserService(UserRepository repository) {
        this.repository = repository;
    }
}
Заметили проблему в этом коде? Сообщите нам.
🚫

Никакого XML

@SpringBootApplication активирует сканирование компонентов и автоконфигурацию, устраняя все XML-файлы связывания.

💉

Инъекция конструктора

Spring автоматически инъецирует зависимости через конструкторы, делая бины проще для тестирования и понимания.

Автоконфигурация

Spring Boot настраивает DataSource, JPA и другую инфраструктуру из classpath без шаблонного кода.

Старый подход
XML-определения бинов
Современный подход
Бины на основе аннотаций
Начиная с JDK
17
Сложность
Средний
Spring XML-конфигурация бинов vs. на основе аннотаций
Доступно

Широко доступно начиная с Spring Boot 1.0 (апрель 2014); Spring Boot 3 требует Java 17+

Традиционные Spring-приложения связывали бины через XML-файлы конфигурации, объявляя каждый класс с его зависимостями в виде многословных элементов <bean>. Хотя поддержка аннотаций существовала с Spring 2.5, XML оставался преобладающим подходом до тех пор, пока Spring Boot не ввёл автоконфигурацию. Spring Boot обнаруживает бины, аннотированные @Component, @Service, @Repository и @Controller, через сканирование classpath, автоматически удовлетворяет зависимости через инъекцию конструктора и настраивает инфраструктуру, такую как DataSource, из classpath — устраняя все файлы XML-связывания.