Spring XML-конфигурация бинов vs. на основе аннотаций
Замените многословные Spring XML-определения бинов лаконичной конфигурацией на основе аннотаций с Spring Boot.
<!-- 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>
@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 без шаблонного кода.
Широко доступно начиная с 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-связывания.