que - Hacer referencia a un componente Spring anotado en una definición de Bean XML
spring mvc 4 tutorial español (3)
Asegúrese de agregar el código a continuación en su archivo xml
<context:component-scan base-package="" />
<context:annotation-config />
Estoy usando una biblioteca externa que requiere que la configure usando una definición de Bean XML; en la definición de Bean necesito proporcionar una clase externa con un Bean de mi proyecto. Estoy usando anotaciones de primavera con el escaneo de componentes.
¿Cómo hago referencia a mi Bean anotado dentro de la Definición de Bean XML?
¿Existen alternativas para crear una definición de Bean XML?
Detalles: Primavera 3.0.7
La anotación @Service toma un valor de Cadena opcional que se puede usar para darle al bean un nombre de su elección. Por ejemplo, si su bean personalizado se ve así:
@Service("mySpecialName")
public class MyClass { ... }
Entonces tu xml podría tener:
<bean class="com.someone.else.library.SomeClass">
<property name="someProp" ref="mySpecialName"/>
</bean>
No importa cómo se creó (basado en metadatos XML o de anotación), cada bean termina en el contexto de la aplicación con un nombre único.
Si acaba de anotar su clase con @Component
o derivados, sin indicar ningún nombre, se aplicará el esquema de denominación predeterminado y el nombre del bean será su nombre de clase con el primer carácter en minúscula: ClassName => "className"
.
Teniendo esto en cuenta, si necesita inyectar ese bean en una definición de bean XML, hágalo como con cualquier otro bean en su contexto:
<bean id="someBean" class="SomeClass">
<property name="someProp" ref="className"/><!-- to stick to the above example -->
</bean>
Dado que está mezclando anotaciones con XML, el contexto de la aplicación podrá ubicar el bean "className" correctamente.