Spring ignoriert @Autowired

boxi

Mitglied
Ich bin gerade daran, spring zu lernen. Das DI funktioniert im Prinzip. Aber wenn ich es mit den Annotations versuche stehe ich wie ein Esel vor dem Berg:

[JAVA=12]
@Component("BBP")
public class BestellungBusinessProcessAnnotation {
@Autowired
private BestellungDAO bestellungDAO;
@Autowired
private KundeDAO kundeDAO;
@Resource(name="wareDAO")
private WareDAO wareDAO;
[/code]

[XML=7]
<context:component-scan base-package="ch.boxi.springTest.annotation" />
<context:annotation-config />
[/XML]

und hier der Test den ich ausführe:
Java:
ClassPathResource res = new ClassPathResource("beans.xml");
BeanFactory beanFactory = new XmlBeanFactory(res);
...
if(beanFactory.getBean("BBP", BestellungBusinessProcessAnnotation.class).getWareDAO() == null){
	System.out.println("no wareDAO init - BBP");
}
if(beanFactory.getBean("BBP", BestellungBusinessProcessAnnotation.class).getKundeDAO() == null){
	System.out.println("no KundeDAO init - BBP");
}

ja - leider werden beide System.outs ausgegeben. Wisst ihr an was, dass das liegen kann?
 
Du musst anstelle von

Java:
...
BeanFactory beanFactory = new XmlBeanFactory(res);
...

den ApplicationContext nutzen
Java:
...
ApplicationContext appCtx = new XmlApplicationContext(res);
...

Edit: Und die Komponenten die injeziert werden sollen, brauchen natürlich auch die @Component Annotation.
 
Super, das hat geholfen. Für alle anderen Anfänger die auch die Klasse XmlApplicationContext suchen... die gibt es nicht. Aber eine nützliche Implementierung ist: ClassPathXmlApplicationContext

Danke mvitz
 

Zurück
Oben