I have an Abstract parent class which defines all of the setters and getters for my concrete sub-classes (which implement a template method invoked by the abstract parent).

I can load my bean.xml just fine but if I try and instantiate an instance of one of my beans I get the exception below. Thing is, none of what it's complaining about is true! The setters/getters are all public, there is a public no-argument ctor (otherwise spring would have complained on loading the bean.xml) and the class definition hasn't changed.

Only thing I can think of is that spring can't invoke the public getters/setters which are defined on the abstract parent; which kind of looks like a big hole in Spring's support of inheritance which in turn makes me think I must be wrong so anyone have an idea?

I'm going to re-factor these classes to use a strategy instead of a template method anyway but it would be nice to know for the future.

org.springframework.beans.factory.BeanCreationExce ption: Error creating bean with name 'backupActionBean' defined in class path resource [beans.xml]: Instantiation of bean failed; nested exception is org.springframework.beans.FatalBeanException: Could not instantiate class [com.pti.dbmulti.ui.BackupAction]; has class definition changed? Is there a public no-arg constructor?; nested exception is java.lang.IllegalAccessException: Class org.springframework.beans.BeanUtils can not access a member of class com.pti.dbmulti.ui.BackupAction with modifiers "public"
org.springframework.beans.FatalBeanException: Could not instantiate class [com.pti.dbmulti.ui.BackupAction]; has class definition changed? Is there a public no-arg constructor?; nested exception is java.lang.IllegalAccessException: Class org.springframework.beans.BeanUtils can not access a member of class com.pti.dbmulti.ui.BackupAction with modifiers "public"
java.lang.IllegalAccessException: Class org.springframework.beans.BeanUtils can not access a member of class com.pti.dbmulti.ui.BackupAction with modifiers "public"
at sun.reflect.Reflection.ensureMemberAccess(Reflecti on.java:57)
at java.lang.Class.newInstance0(Class.java:302)