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.