Injeção de Dependencia

Olá pessoa, estou estudando a apostila fj28, e na parte de injeção de dependencia estou tendo o seguinte erro:

org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'produtosController' defined in file [C:\Users\Fernando\workspace jee\.metadata\.plugins\org.eclipse.wst.server.core\tmp1\wtpwebapps\lojaVirtual\WEB-INF\classes\controller\ProdutosController.class]: Unsatisfied dependency expressed through constructor argument with index 0 of type [dao.ProdutoDAO]: : Error creating bean with name 'produtoDAO' defined in file [C:\Users\Fernando\workspace jee\.metadata\.plugins\org.eclipse.wst.server.core\tmp1\wtpwebapps\lojaVirtual\WEB-INF\classes\dao\ProdutoDAO.class]: Unsatisfied dependency expressed through constructor argument with index 0 of type [org.hibernate.Session]: : No matching bean of type [org.hibernate.Session] 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 [org.hibernate.Session] 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.UnsatisfiedDependencyException: Error creating bean with name 'produtoDAO' defined in file [C:\Users\Fernando\workspace jee\.metadata\.plugins\org.eclipse.wst.server.core\tmp1\wtpwebapps\lojaVirtual\WEB-INF\classes\dao\ProdutoDAO.class]: Unsatisfied dependency expressed through constructor argument with index 0 of type [org.hibernate.Session]: : No matching bean of type [org.hibernate.Session] 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 [org.hibernate.Session] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {} at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:698) at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:192) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:984) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:886)

Não consegui identificar o que está acontecendo, porém se eu rodar algum projeto que não utilize injeção de dependencia funciona normalmente.

Se todas as classes estiverem anotadas corretamente, experimenta colocar a anotação @Autowired no construtor do seu ProdutosController.

No matching bean of type [org.hibernate.Session]

vc criou o CriadorDeSession e CriadorDeSessionFactory da apostila?

ou pelo menos usou o componente do VRaptor que cria sessions?

Criei HibernateUtil para a classe ProdutoDAO, mas também anotei a classe ProdutoDAO com o @Component.
Isso que está dando o problema ???

ou vc usa o HibernateUtil, ou recebe a Session no construtor…

se quiser receber a session no construtor, coloque isso no web.xml:

<context-param>
		<param-name>br.com.caelum.vraptor.packages</param-name>
		<param-value>br.com.caelum.vraptor.util.hibernate</param-value>
	</context-param>

Obrigado Lucas, quando saberei a hora de precisar configurar o web.xml, porque antes de eu usar o @Componet estava funcionando normal, sem precisar alterar o web.xml.

antes de usar o @Component o VRaptor não tomava conta da sua classe…

vc provavelmente dava new nela, certo?

qdo vc coloca @Component, e recebe a classe no construtor de outra classe, o VRaptor tenta criar essa classe dando new no construtor. Se ele tiver algum parâmetro, ele ve se ele sabe criar o parâmetro (se ele é @Component ou tem um ComponentFactory) e vai criando sucessivamente.
Se ele não consegue criar algum dos parâmetros, dá aquele erro que vc recebeu.

no caso da Session do hibernate, vc não pode colocar @Component nela, então precisa criar uma ComponentFactory. A configuração do web.xml é só uma componentFactory de Session já pronta. Geralmente vc não vai precisar mexer no web.xml

[]'s