Chào các bạn tôi đã tạo một ứng dụng web đơn giản bằng cách sử dụng ngủ đông và mùa xuân và tôi muốn triển khai một lớp trừu tượng có chứa các hoạt động crud nhưng tôi có lỗi:Phụ thuộc không thỏa mãn được thể hiện qua đối số hàm tạo với chỉ mục 0 của loại [java.lang.Class]
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'clientService' defined in class path resource [applicationContext.xml]:
Cannot resolve reference to bean 'clientDao' while setting bean property 'clientDao'; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException:
Error creating bean with name 'clientDao' defined in class path resource [applicationContext.xml]:
Unsatisfied dependency expressed through constructor argument with index 0 of type [java.lang.Class]:
GenericDao
public interface GenericDao<T, ID extends Serializable> {
T save(T entity);
T update(T entity);
void delete(T entity);
T findById(ID id);
List<T> findAll();
void flush();
}
GenericDaoImpl
@Transactional
public class GenericDaoImpl<T, ID extends Serializable> implements GenericDao<T, ID> {
@Autowired
SessionFactory sessionFactory ;
private Class<T> persistentClass;
public GenericDaoImpl() {
super();
}
public GenericDaoImpl(Class<T> persistentClass) {
super();
this.persistentClass = persistentClass;
}
@Transactional
public T save(T entity) {
this.sessionFactory.getCurrentSession().save(entity);
return null;
}
@Transactional
public T update(T entity) {
this.sessionFactory.getCurrentSession().update(entity);
return null;
}
@Transactional
public void delete(T entity) {
this.sessionFactory.getCurrentSession().delete(entity);
}
@SuppressWarnings("unchecked")
@Transactional
public T findById(ID id) {
return (T) this.sessionFactory.getCurrentSession().load(this.getPersistentClass(), id);
}
@SuppressWarnings("unchecked")
@Transactional
public List<T> findAll() {
return this.sessionFactory.getCurrentSession().createQuery("* from"+this.getPersistentClass().getSimpleName()).list();
}
@Transactional
public void flush() {
this.sessionFactory.getCurrentSession().flush();
}
public SessionFactory getSessionFactory() {
return sessionFactory;
}
public void setSessionFactory(SessionFactory sessionFactory) {
this.sessionFactory = sessionFactory;
}
public Class<T> getPersistentClass() {
return persistentClass;
}
public void setPersistentClass(Class<T> persistentClass) {
this.persistentClass = persistentClass;
}
}
ClientDao
public interface ClientDao extends GenericDao<Client,Integer> {
}
ClientDaoImpl
@Transactional
@Repository("clientDao")
public class ClientDaoImpl extends GenericDaoImpl<Client,Integer> implements ClientDao {
public ClientDaoImpl(Class<Client> persistentClass) {
super(persistentClass);
}
ứng dụng context.xml
<bean id="client" class="com.webapp.model.Client"/>
<bean id="genericDao" class="com.webapp.dao.GenericDaoImpl">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
<bean id="clientDao" class="com.webapp.dao.ClientDaoImpl" parent="genericDao">
<constructor-arg ref="client" />
</bean>
<bean id="clientService" class="com.webapp.service.ClientServiceImpl">
<property name="clientDao" ref="clientDao" />
</bean>
cảm ơn bạn rất nhiều, nó hoạt động –