Problema de Integração Spring + Hibernate

Olá amigos do GUJ.

Estou tentando fazer uma integração Spring com Hibernate, para isso estou usando a HibernateDaoSupport, mas li em um post que a Spring desencora o uso da mesma, alguém saberia me dizer porque? e qual seria a alternativa?

Aproveitando essa oportunidade, estou com o seguinte problema na hora de compor minha estrutura:

Uso a Classe Generica abaixo:

public class HibernateGenericDAO<T, ID extends Serializable> extends HibernateDaoSupport implements IGenericDAO<T, ID> {

	private static Log LOG = LogFactory.getLog(HibernateGenericDAO.class);
	
	private Class<T> persistentClass;
	
	@SuppressWarnings("unchecked")
	public HibernateGenericDAO() {
		this.setPersistentClass((Class<T>) ((ParameterizedType) getClass()  
	            .getGenericSuperclass()).getActualTypeArguments()[0]);
		this.getSessionFactory();
	}
	
	@Override
	public T saveOrUpdate(T entity) {
		try {  
		       this.getHibernateTemplate().save(entity);  
		       return entity;  
		   } catch (final HibernateException ex) {  
		       HibernateGenericDAO.LOG.error(ex);  
		       throw convertHibernateAccessException(ex);  
		   } 
	}

	@Override
	public void delete(T entity) {
		try{
			this.getHibernateTemplate().delete(entity);
		}catch(final HibernateException ex){
			HibernateGenericDAO.LOG.error(ex);
			throw convertHibernateAccessException(ex);
		}
		
		
	}

	@Override
	public List<T> listAll() {
		try {  
		       return this.getHibernateTemplate().loadAll(getPersistentClass());  
		   } catch (final HibernateException ex) {  
		       HibernateGenericDAO.LOG.error(ex);  
		       throw convertHibernateAccessException(ex);  
		   }  
	}

	@Override
	public T getById(ID id) {
		try{
			return (T) this.getHibernateTemplate().get(getPersistentClass(), id);
		}catch(final HibernateException ex){
			HibernateGenericDAO.LOG.error(ex);
			throw convertHibernateAccessException(ex);
		}
		
	}

	public Class<T> getPersistentClass() {
		return this.persistentClass;
	}

	public void setPersistentClass(Class<T> persistentClass) {
		this.persistentClass = persistentClass;
	}
	
	@SuppressWarnings("unchecked")
	protected List<T> findByCriteria(Criterion... criterion) {  
		   try {  
		       Criteria crit = this.getHibernateTemplate()  
		                .getSessionFactory()  
		                .getCurrentSession()  
		                .createCriteria(getPersistentClass());  
		       for (Criterion c : criterion) {  
		      crit.add(c);  
		       }  
		       return crit.list();  
		   } catch (final HibernateException ex) {  
		       HibernateGenericDAO.LOG.error(ex);  
		       throw convertHibernateAccessException(ex);  
		   }  
		    }
}

Mas meu principal problema está na classe mais especializada:

@Repository("enderecoDAO")
public class EnderecoDAO extends HibernateGenericDAO<Endereco, Integer> implements IEnderecoDAO{

	@Autowired
	public EnderecoDAO(SessionFactory sessionFactory){
		super(Endereco.class);
		setSessionFactory(sessionFactory);
	}

	@Override
	public List<Endereco> findWithLogradouro() {
		return findByCriteria(Restrictions.isNotNull("telefone"), Restrictions.ne("telefone", ""));  
	}

}

Veja que minha classe mãe recebe um ( Class, Integer).

Como eu posso fazer pra chamar o construtor da minha classe mãe passando esses dois paramentros?

Obrigado a todos