Boa Noite,
Estou desenvolvendo um projeto utilizando o Vraptor3 utilizando o modelo MVC.
O codigo abaixo funciona perfeitamente:
Contexto:
@Resource
public class MainController {
private final Result result;
public MainController(Result result) {
this.result = result;
}
...
}
No entanto, quando adiciono o Objeto DAO obtenho um erro estranho:
@Resource
public class MainController {
private final ContratoEletronicoDAO dao;
private final Result result;
public MainController(ContratoEletronicoDAO dao, Result result) {
this.dao=dao;
this.result = result;
}
...
}
ERROR: HTTP Status 500 -
org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'mainController' defined in file [C:\Tomcat 6.0\webapps\smsw\WEB-INF\classes\leonardo\lsd\ic\unicamp\smsw\controller\MainController.class]: Unsatisfied dependency expressed through constructor argument with index 0 of type [leonardo.lsd.ic.unicamp.smsw.dao.ContratoEletronicoDAO]: : No matching bean of type [leonardo.lsd.ic.unicamp.smsw.dao.ContratoEletronicoDAO] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {}; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No matching bean of type [leonardo.lsd.ic.unicamp.smsw.dao.ContratoEletronicoDAO] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {}
...
org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:698)
org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:192)
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:984)
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:886)
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:479)
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:450)
org.springframework.beans.factory.support.AbstractBeanFactory$2.getObject(AbstractBeanFactory.java:328)
org.springframework.web.context.request.AbstractRequestAttributesScope.get(AbstractRequestAttributesScope.java:43)
org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:324)
...
org.springframework.beans.factory.NoSuchBeanDefinitionException: No matching bean of type [leonardo.lsd.ic.unicamp.smsw.dao.ContratoEletronicoDAO] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {}
org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoSuchBeanDefinitionException(DefaultListableBeanFactory.java:896)
org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:765)
org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:680)
org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:771)
org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:691)
Preciso de alguma configuração adicional para utilizar o Objeto DAO no construtor do CONTROLLER?
Essa é a minha Classe DAO
public class ContratoEletronicoDAO
{
private Connection con;
public ContratoEletronicoDAO() throws SQLException{
this.con = ConnectionFactory.getConnection();
}
public void adiciona(ContratoEletronico ce) throws ClassNotFoundException, SQLException{
String sql = "INSERT INTO ContratoEletronico(data,arquivo,nome)VALUES (?,?,?)";
PreparedStatement stmt = con.prepareStatement(sql);
stmt.setString(1,ce.getData());
stmt.setString(2,ce.getArquivo());
stmt.setString(3,ce.getNome());
stmt.execute();
stmt.close();
con.close();
}
}
Obrigado pela ajuda.