Javafree
Página Inicial do Fórum > Spring Framework

org.springframework.beans.factory.NoSuchBeanDefinitionException



Criar novo tópico   Responder tópico


  1. RafaelPl
    Posts:222


    Comment Arrow

    Publicado em: 09/08/2013 17:00:17

    Estou estudando a apostila da caelum FJ-21 (JAVA WEB),
    cheguei na parte de injeção de depêndencias

    a única coisa diferente que uso da apostila é o banco (firebird)

    Segui a apostila, tudo estava funcionando até começar essa parte!

    segue os códigos e os erros (principais)



    Parte da conexão, configurado como está na apostila + partes de pool,statements que achei na internet...

    TarefaDAO


    TarefasController




    ERROS








    Não sei onde errei pois segui a apostila... '.' só mudando a parte da conexão
    -----------------------------------------

    Também estava conversando com um amigo que programa php...
    ele disse que como estou começando para web agora deveria deixar de lado essas frameworks e fazer tudo a mão...

    a opinião dele é correta ou eu deveria continuar com o spring?



  1. gabrielsimas
    Posts:148


    Comment Arrow

    Publicado em: 12/08/2013 21:10:37

    Fala Rafael,

    Este erro foi retornado porque você usou a anotação @AutoWired em um método onde no arquivo xml você não injetou nenhuma dependência. O que é o correto:

    1) você criou corretamente o Bean DataSource
    2) Agora, para funcionar o que você precisa, você irá injetar o DataSource dentro do Bean criado para TarefaDAO, como você está injetando via construtor, então você irá precisar fazer o seguinte:



    E isso com certeza irá melhorar o seu acesso e aí sim irá funcionar. Porque então você está injetando o acesso ao Banco dentro de TarefaDAO.

    Segue o link diretamente da SpringSource sobre este assunto e exclusivamente sobre ele: http://static.springsource.org/spring/docs/1.2.9/reference/beans.html#beans-factory-collaborators

    Forte Abraço

    _________________

    Luis Gabriel Nascimento Simas
    Arquiteto de Software

    Redes Sociais:
    Linkedin: http://www.linkedin.com/in/gabrielsimas
    Facebook: http://www.facebook.com/luisgabrielsimas
    Twitter: @gabnascimento



  1. RafaelPl
    Posts:222


    Comment Arrow

    Publicado em: 13/08/2013 09:11:38

    Funcionou! kkkk
    na apostila não falava disso, estava meio perdido e tinha até pulado essa parte...

    muito obrigado



  1. romarcio
    Posts:421


    Comment Arrow

    Publicado em: 13/08/2013 22:29:50

    [quote="RafaelPl"]Funcionou! kkkk
    na apostila não falava disso, estava meio perdido e tinha até pulado essa parte...

    muito obrigado


    Funcionou mas não deveria ser a maneira correta de você resolver o problema.
    Você está usando configuração por anotações, quando você faz isso:
    você passa a usar por XML e não mais anotações, por isso na apostila não aparece esse trecho de código, porque ela deve ensinar a usar apenas anotações.

    Pelo que vi no seu código o nome do bean, declarado no arquivo spring-.xml deveria ser o mesmo declarado na classe TarefaDAO.
    assim, altera para:


    Quando você usa anotações, por padrão as anotações usam como nome do bean o nome da classe com a primeira letra em minuscula.
    Sendo assim, no construtor a classe é DataSource e o nome do bean automaticamente será dataSource.
    Assim, o Spring consegue saber que o bean criado no XML deve ser injetado em DataSource quando este for anotado com @Autowired.

    Como no XML usou mysqlDataSource, o Spring não injeta nada e por isso a exceção é lançada, dizendo:
    No qualifying bean of type [br.com.diretainformatica.jdbc.dao.TarefaDAO] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency.
    Ou seja, nenhum bean foi encontrado para a injeção na dependencia anotada com autowire em TarefaDAO.


    Faça a mudança, e retire do código o XML que lhe foi sugerido adicionar. Dessa forma deve funcionar, se ainda assim der erro, poste a exceção.
    _________________

    http://www.mballem.com/
    Desvendando o MongoDB, do Mongo Shell ao Java Driver - http://bit.ly/1HL8Rya



  1. lucasjds
    Posts:5


    Comment Arrow

    Publicado em: 28/03/2014 22:25:33

    Galera tudo bom?

    estou exatamente com esse problema. Fiz ambas sugestões e nada. Meu código esta identico.

    Eu ainda não entendi a parte do bean dac conexão a apostila não tem esta parte.

    Alguem tem o código ou alguma explicação?

  1. Comment Arrow

    Publicado em: 04/01/2015 09:15:59

    Prezados, boa noite tudo certo. Também andei passando por esse mesmo problema seguido a apostila de desenvolvimento WEB da Caelum.

    Consegui resolver o problema através do conselho do gabrielsimas. Primeiramente, gostaria de agradecê-lo. Criei o bean para o TarefaDAO e funcionou.

    Quando eu estava passando por este problema, achei no GUJ um usuário dizendo que trocou a versão dos *.jars do Spring e que após isso havia funcionado. Fiz o mesmo que ele havia falado e nada de funcionar.

    Gostaria de agradecer novamente ao gabrielsimas.

    Para quem quiser saber como fica o spring-cotext.xml:




    Quando ao conselho do usuário romarcio, não funcionou do modo que dissera. A exception informada no console é praticamente a mesma que eu e o usuário RafaelPl estávamos vendo.


    _________________

    A boa palavra não deixa imperfeição para críticas. (Lao Tsé - Tao Te Ching)

    Linkedin: http://br.linkedin.com/pub/thiago-machado/86/608/931



  1. Relacionados