Dúvida JSF e Spring

7 respostas
P

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…

7 Respostas

A

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…

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

P

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…

R

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;
	}
}
L

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....
P

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:

@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;


}

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!

A

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… ?

P

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!

Criado 21 de março de 2011
Ultima resposta 22 de mar. de 2011
Respostas 7
Participantes 4