8
我試圖實例在Spring的通用類,但實例化通用級bean我得到以下異常:問題春
bean的初始化失敗;嵌套異常是 org.springframework.aop.framework.AopConfigException:無法生成類[class football.dao.jpa.GenericJpaDAO]的CGLIB子類:此問題的常見原因包括使用最終類或不可見類;嵌套的例外是java.lang.IllegalArgumentException異常:超類,沒有空的構造函數,但沒有給出參數:
這是Spring容器的XML配置:
<bean id="clubDAO" class="football.dao.jpa.GenericJpaDAO">
<constructor-arg type="EntityManagerFactory" ref="entityManagerFactory"/>
<constructor-arg type="Class" value="football.model.entities.ClubEntity"/>
<constructor-arg type="String" value="ClubEntity"/>
</bean>
這是通用類:
public class GenericJpaDAO <T extends HavingID> {
private EntityManager em;
private Class entityClass;
private String entityName;
public GenericJpaDAO(Class entityClass, String entityName,
EntityManagerFactory emFactory) {
this.entityClass = entityClass;
this.entityName = entityName;
em = emFactory.createEntityManager();
}
@Transactional
public void create(T entity) {
em.persist(entity);
}
// more methods
}
我不確定可能導致這種情況。我會很感激任何想法。
Spring 4與Objenesis允許代理沒有默認的類(即:no-arg)構造函數,請參閱https://jira.springsource.org/browse/SPR-3150 – tukushan 2013-12-17 16:45:01