Configuración XML de Spring vs basada en anotaciones
Reemplaza las extensas definiciones de beans XML de Spring por configuración concisa basada en anotaciones con 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;
}
}
Sin XML
@SpringBootApplication activa el escaneo de componentes y la auto-configuración, eliminando todos los archivos de cableado XML.
Inyección por constructor
Spring inyecta dependencias a través de constructores automáticamente, haciendo los beans más fáciles de probar y razonar.
Auto-configuración
Spring Boot configura DataSource, JPA y otra infraestructura desde el classpath sin código repetitivo.
Ampliamente disponible desde Spring Boot 1.0 (abril 2014); Spring Boot 3 requiere Java 17+
Las aplicaciones Spring tradicionales cableaban beans mediante archivos de configuración XML, declarando cada clase y sus dependencias como elementos <bean> extensos. Aunque el soporte de anotaciones existía desde Spring 2.5, el XML siguió siendo el enfoque dominante hasta que Spring Boot introdujo la auto-configuración. Spring Boot detecta beans anotados con @Component, @Service, @Repository y @Controller mediante escaneo del classpath, satisface las dependencias a través de inyección por constructor automáticamente y configura la infraestructura como DataSource desde el classpath — eliminando todos los archivos de cableado XML.