Thursday, January 05, 2012

Classi astratte nel file di configurazione del bean

In Spring Framework (ma penso in tutti i moduli di Spring) attenzione alle classi astratte.

Così come non possono essere istanziate direttamente da new, così non devono essere inserire nel file di configurazione applicationContext.xml.

Altrimenti, dopo aver inserito i riferimenti (corretti) della classe astratta nel file di configurazione e dopo aver lanciato il main, si becca questa eccezione:

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'testAstratto' defined in class path resource [applicationContext.xml]: Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [AAA]: Is it an abstract class?; nested exception is java.lang.InstantiationException
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:883)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:839)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:440)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409)
   
dove AAA è la classe astratta.

L'unico modo per instanziarla è inserire l'attributo abstract="true" nel file di configurazione: in questo modo è possibile richiamare la classe lato Java.

No comments: