Dúvida JSF e Spring

Estou construindo uma aplicacao com JSF 2 e Spring 3, dae minha dúvdida é s seguinte:

Quando eu nao usava nenhum desses frameworks, eu logava e setava o usuario logado na Session da aplicacao com algum identificador tipo como na seguinte linha:

Agora utilizando o JSF para prover o MVC e o SPRING para gerenciar minha camada de negócio, Onde e Como eu guardaria o usuario logado para ser utilizado na aplicacao?
No container o Spring? na Session do JSF? um exemplo em codigo disso…

[quote=princext]
Agora utilizando o JSF para prover o MVC e o SPRING para gerenciar minha camada de negócio, Onde e Como eu guardaria o usuario logado para ser utilizado na aplicacao?
No container o Spring? na Session do JSF? um exemplo em codigo disso…[/quote]

Acredito que ficaria sobre o Controller do JSF… Por exemplo…

Estou pesquisando se o Spring me provê uma maneira simples de fazer isso…digo isso pela a injecao de dependencias
que ele possui…minha ideia era buscar o usuario logado, e depois disso poder “anotar” onde eu bem entender no codigo
para que o spring injete para mim uma dependencia do usuario logado…mas ainda nao sei muito bem como organizar isso…

pra trabalhar com HttpSession no JSF criei uma classe utilitária:

public class FacesUtils {

	public static HttpSession getSession() {
		FacesContext facesContext = FacesContext.getCurrentInstance();
		 HttpServletRequest request = (HttpServletRequest) facesContext.getCurrentInstance().getExternalContext().getRequest();
		 HttpSession session = request.getSession();
		return session;
	}
}

Voce pode fazer Injeção no JSF, e “injetar” o usuário que está na sessão a qualquer MB.

@ManagedProperty("#{usuarioMB.usuario}")
private Usuario usuario;

E colocar o ManageBean do usuario na SessionScope


@ManagedBean
@SessionScope
public UsuarioMB class....

Hummmmm ok…as duas solucoes fazem a mesma coisa ne?! uma eh por anotation e a outra nao, mas é mais ou menos isso que eu keria…vlw por esclarecerem pessoal, o negocio e que as vezes eu so penso no Spring, pq ele é um framework literalmente Poderoso, ele facilita a minha vida com muitas coisas, ele me permite usar as coisas de maneira bem simples por exemplo:

[code]@Service(value=“serviceTeste”) //Faz com que o Spring registre o bean como servicoTeste no contexto.
public class ServiceTeste {

//atributos

//metodos

}

public class FacadeTeste {

@Resource(name=“serviceTeste”) //Faz com que o spring injete o bean serviceTeste
private ServiceTeste service;

}

[/code]

Ou seja, com esse codigo acima, o Spring instancia a Classe ServiceTeste para mim e com a anotation “@Resource” eu posso jogar uma instancia dessa classe
aonde eu bem entender no código. Isto é uma maneira bem simples e vantajosa de se trabalhar, e eu estava kerendo usar esse “PODER” do Spring pra isso, so que a diferença
é que eu nao preciso que o Spring instancie o Usuario pra mim(pq vou traze-lo do banco) mas preciso que o Spring o injete em qualquer lugar do código quando eu precisar, assim
como foi feito com a instancia da classe ServiceTeste… mas acredito que a forma como o Lucas Emanuel colocou de usur as anotation ja resolve minha vida…vlws pessoal!

Alguém conseguiria de forma crítica levantar os pros e contras de se fazer injeção de dependências com JSF puro, sem o uso de Spring IoC… ?

André,

Estou passando por isso, e até o momento a conclusão que cheguei foi a seguinte: acredito que quando pensamos em injeção de dependencia é algo como se pensassemos na arquitetura a nas responsabilidades entre os componentes, porque acredito que tanto o JSF quanto o Spring injetam as dependencias tranquilamente, o que muda eh que uma instancia de um objeto ou é “guardada” no conteiner do Spring ou é guardada pelo JSF, pedir pra o JSF injetar um recurso de uma classe ou o Spring em um controlador acredito que tanto faz, talvez o que difere é a maneira como cada framework faz as coisas, mas o resultado é o mesmo, no meu caso estou deixando o Spring gerenciar tudo para mim, desde pojos DAO, Classes de negócio, e até mesmo meus Controladores, isso mesmo nao façu uso da anotation “@ManagedBean” e sim “@Controller” do Spring, isso pq EU decidi deixar o Spring fazer pra mim o que ele sabe fazer de melhor: “Gerenciar as coisas”. Agora, por outro lado, se a algo que o JSF faça de melhor que o Spring, ou até a mesmo a compreensão de algo específico do codigo fonte ficaria melhor com o JSF gerenciando algumas coisas e tals, nao vejo pq tb nao deixar o JSF fazer o que ele sabe fazer de melhor, so que na minha opiniao o que o JSF faz de melhor como um framework MVC é sua biblioteca de custon tags para renderizar componentes com integracao com um monte de frameworks baseado em ajax como primefaces, richfaces e CIA, o Spring tambem faz isso, mas nao vejo muita gente usando a view do spring pra fazer alguma coisa…Mas tb nao sou expert em JSF 2.0 estou começando agora com ele, e ate o momento tudo o que ele faz de injecao de dependencia o Spring faz e muito bem feito, so que pode ter algo especifico que deva ser feito com JSF ai tudo tudo bem utilizar…muito disso é uma uma questao de decisoes que vao fazer a mesma coisa saca…enfim…se alguem experiente em JSF 2.0 quiser por sua opiniao ae vai ser bom tb!