Instanziieren Ich versuche, eine generische Klasse im Frühjahr zu instanziieren, aber ich folgende Ausnahme erhalten:Problem generische Klasse Bohne im Frühjahr
Initialisierung der Bohne fehlgeschlagen; verschachtelte Ausnahme ist org.springframework.aop.framework.AopConfigException: Konnte CGLIB-Unterklasse der Klasse nicht generieren [Klasse football.dao.jpa.GenericJpaDAO]: Häufige Ursachen für dieses Problem sind die Verwendung einer letzten Klasse oder einer nicht sichtbaren Klasse. verschachtelte Ausnahme ist java.lang.IllegalArgumentException: Superklasse hat keine Null-Konstrukteuren aber keine Argumente gegeben wurden:
Dies ist die XML-Konfiguration für den Frühling Container:
<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>
Dies ist die allgemeine Klasse:
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
}
Ich bin nicht wirklich sicher, was könnte das verursachen. Ich würde mich über irgendwelche Ideen freuen.
Spring 4 mit Objenesis erlaubt das Proxying von Klassen ohne Standardkonstruktor (zB: no-arg), siehe https://jira.springsource.org/browse/SPR-3150 – tukushan