Una alternativa a la configuración XML es la configuración basada en anotaciones, que se basa en metadatos de código
de bytes para conectar componentes en lugar de declaraciones entre corchetes angulares. En lugar de utilizar XML
para describir la herramienta de enlace del bean, el desarrollador envuelve la configuración en la propia clase del
bean utilizando anotaciones para la declaración de clase, método o campo correspondiente. Como se menciona en la
subsección Ejemplo: AutowiredAnnotationBeanPostProcessor
,
usandoBeanPostProcessor
en combinación con anotaciones es un medio común para ampliar el contenedor
Spring IoC. Por ejemplo, Spring 2.0 introdujo la capacidad de forzar propiedades requeridas usando la anotación
@Required
. Spring 2.5 permitió el mismo enfoque general para gestionar la inyección de dependencias
utilizando Spring. Esencialmente, la anotación @Autowired
proporciona las mismas capacidades que se
describen en la sección" Detección
y vinculando objetos que interactúan, pero con un control más preciso y una aplicabilidad más amplia.
Spring 2.5 también agregó soporte para anotaciones JSR-250 como @PostConstruct
y
@PreDestroy
. Para Spring 3.0, se agregó soporte para las anotaciones JSR-330 (Inyección de
dependencia para Java) contenidas en el paquete javax.inject
, como @Inject
y @Named
.
La inyección de dependencia mediante anotaciones se produce antes de la inyección de dependencia mediante XML. Por lo tanto, la configuración XML anula las anotaciones de propiedades mediante ambos enfoques.
Como de costumbre, puede registrar postprocesadores como definiciones de beans independientes, pero también se pueden
registrar implícitamente incluyendo la siguiente etiqueta en su configuración Spring XML (tenga en cuenta la
inclusión del espacio de nombres context
):
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
https://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
https://www.springframework.org/schema/context/spring-context.xsd">
<context:annotation-config/>
</beans>
El elemento <context:annotation-config/>
registra implícitamente los siguientes postprocesadores:
<context:annotation-config/>
solo busca anotaciones para beans en el mismo contexto de
aplicación en el que está definido. Esto significa que si pones <context:annotation-config/>
en WebApplicationContext
para DispatcherServlet
, comprobará la presencia de beans
@Autowired
solo en sus controladores, no en servicios.