[code]public class ContatoDAOImpl extends GenericDaoiBATIS<Contato, Integer>
implements ContatoDAO {
public ContatoDAOImpl(Class<Contato> persistentClass) {
super(persistentClass);
// TODO Auto-generated constructor stub
}
[/code]
Como injetar um bean do tipo Class<Contato> no meu construtor?
Pessoal , resolvi meu problema parcialmente.
Podem da um CODE-Review?
Meu applicationContext:
<bean id="contatoDao" class="afs.dao.ContatoDAOImpl">
<constructor-arg value="afs.beans.Contato"/>
<property name="dataSource" ref="dataSource" />
<property name="sqlMapClient" ref="sqlMapClient" />
</bean>
Meu DAO(construtor):
@SuppressWarnings("unchecked")
public ContatoDAOImpl(String clazz) throws ClassNotFoundException {
super((Class<Contato>) Class.forName(clazz));
}
Outra maneira, mas nao achei muito limpa…
Meu applicationContext:
<bean id="contatoDao" class="afs.dao.ContatoDAOImpl" factory-method="createInstance">
<constructor-arg value="afs.beans.Contato"/>
<property name="dataSource" ref="dataSource" />
<property name="sqlMapClient" ref="sqlMapClient" />
</bean>
Meu DAO:
[code]@SuppressWarnings(“unchecked”)
public static ContatoDAOImpl createInstance(String clazz) {
try {
return new ContatoDAOImpl((Class<Contato>) Class.forName(clazz));
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
return null;
}
public ContatoDAOImpl(Class<Contato> persistentClass) {
super(persistentClass);
}[/code]
Não deveria ser necessário fazer isso, já que o Spring sabe transformar de String pra Class, mas já que não funcionou pra você, tente assim:
<bean id="contatoDao" class="afs.dao.ContatoDAOImpl" factory-method="createInstance">
<constructor-arg type="java.lang.Class" value="afs.beans.Contato"/>
<property name="dataSource" ref="dataSource" />
<property name="sqlMapClient" ref="sqlMapClient" />
</bean>