2
respostas

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'produtoController': Injection of autowired dependencies failed;

Não consigo inicializar o projeto retornando essa Exception.

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'produtoController': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private br.com.casadocodigo.loja.daos.ProdutoDAO br.com.casadocodigo.loja.controllers.ProdutoController.produtoDao; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'produtoDAO': Injection of persistence dependencies failed; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [javax.persistence.EntityManagerFactory] is defined
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:326)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1204)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:538)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:476)
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:302)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:229)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:298)
...

ProdutoDAO

@Repository
@Transactional
public class ProdutoDAO {

    @PersistenceContext
    private EntityManager manager;

    public void Gravar(Produto produto) {
        manager.persist(produto);
    }
}

ProdutoController

@Controller
public class ProdutoController {

    @Autowired
    private ProdutoDAO produtoDao;

    @RequestMapping("/produtos/form")
    public String cadastro() {
        return "produtos/form";
    }

    @RequestMapping("/produtos")
    public String cadastraProduto(Produto produto) {
        produtoDao.Gravar(produto);
        System.out.println(produto);
        return "produtos/ok";
    }

}

ComponentScan do AppWebConfiguration

@ComponentScan(basePackageClasses = { HomeController.class, ProdutoDAO.class })
2 respostas

Bom dia Leonardo, tenta comentar essas linhas:

@PersistenceContext
    private EntityManager manager;

    public void Gravar(Produto produto) {
        manager.persist(produto);
    }

Acho que faltou adicionar a JPAConfiguration na classe de configuração do Servlet Spring.

Veja o método abaixo:

@Override
protected Class<?>[] getServletConfigClasses() {
    return new Class[] { AppWebConfiguration.class, JPAConfiguration.class };
}