JSF2 + Spring3 + Tomcat 7

Bom dia à todos,

Estou com uma certa dificuldade em fazer funcionar o JSF2 com Spring3, parece trivial e tem centenas de exemplos em uma simples googleada mas não consigo fazer com que a injeção funcione.
A maioria dos exemplos se utilizam do @Named e @Inject da JSR330 mas ele não está nativo no tomcat7 e o Spring3 apesar de estar compativel com a especificação não possui essas anotações. Já fiz algumas tentativas variadas no meu projeto:

  • Quando utilizo o @ManagedBean consigo a injeção, mas no meu Service que está anotado com @ManagedProperty("#{meuServico}") dentro do meu bean, diz que ele não o encontra.
  • Quando utilizo o @Controller no meu MBean a aplicação nem mesmo encontra meu MBean.
  • Utilizando o @ManagedBean com o @Resouce ou @Autowired no meu Service traz o mesmo resultado da primeira tentativa.

Quero que minha aplicação tenha o minimo de xml a unica coisa que configuro la são meus sessionFactory’s e os beans do hibernateTemplate, e quero parar por aqui, não quero ter que criar por exemplo os meus beans de Service no xml.

DUVIDAS:

1 - Utilizando o Spring3 preciso realmente do @Named e @Inject, ou consigo injetar o MB, Service e DAO somente com o Spring3?
2 - Para utilizar o @Named e o @Inject como devo proceder? Tem como mesclar essas anotações com as do Spring conversando de forma transparente?
3 - Em resumo preciso de dicas dos pontos chave dessa integração utilizando JSF2 + Spring3 e Tomcat7 utilizando basicamente so as Annotations, se alguem ja fez algo parecido, ainda que um Lab e puder me dar um apoio será de grande ajuda.
Me perdoem se algo tiver fica subjetivo, ou se fiz algum questionamento raso, mas acho que preciso de umas ideias para arejar melhor o entendimento dessa integração.

Guilherme Mendes

Guilherme,
Estou com o mesmo problema, como vc resolveu?
nao consigo injetar a classe service do Spring 3 no managed bean do JSF2.
Obrigado.
Márcio

Olá Marcio, bom eu resolvi isso utilizando o Spring de ponta a ponta, configurei o Context do Spring web.xml, se não me engano tem que declarar uma EL Resolver do Spring para o JSF no faces-config.xml e anotei meus MB’s com @Controller chamando minhas classes de negocio (com @Service) que são injetadas via @Autowired, as classes de negocio chamam meus DAO’s (anotados com @Repository) também através do @Autowired. Talvez minha resposta seja um pouco subjetiva, se tiver alguma dúvida manda ae.

±- MB - @Controller
±- Negocio - @Service
±- DAO - @Repository