@Autowired anotación no funciona
Pregunta
Estoy intentando probar la opción Autowire como esto:
@ContextConfiguration(locations = { "classpath:applnContext.xml" })
public class Foo {
@Autowired
private Bar bar;
public Bar getBar() {
return bar;
}
public void setBar(final Bar bar) {
this.bar = bar;
}
public static void main(final String[] args) {
final Foo f = new Foo();
System.out.println(f.getBar());
}
}
y el archivo de configuración:
<?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 http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd">
<bean id="bar" class="entity.Bar"></bean>
<context:annotation-config />
</beans>
Pero el objeto Bar
no está siendo inyectado. Me estoy perdiendo algo aquí o haciendo algo mal?
Tenga en cuenta que estoy especificando el archivo applicationContext mediante anotación en la clase.
Solución
El @ContextConfiguration atributo es parte del paquete org.springframework.test
, por lo que no va a funcionar de la manera que ha intentado usarlo. Ver este post en los foros de la primavera para más detalles.
Otros consejos
Si se trata de una unidad de prueba, como parece, complemento
@RunWith(SpringJUnit4ClassRunner.class)
Y en su applicationContext.xml
no se olvide de esto (aunque en este caso no es el problema)
<context:component-scan base="org.basepackage" />
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow