Este é um post disponível para assinantes MVPIntegrando JSF 2 e Spring 3 - Revista Java Magazine 92
O artigo trata das vantagens e desvantagens presentes na integração entre o JSF 2 e o Spring 3, além das configurações necessárias para realizar a integração através do Spring Web Flow.
[Artigo já está disponível no Leitor Digital DevMedia®. Clique aqui para acessá-lo]
> Clique aqui para ler todos os artigos da Java Magazine 92
A grande quantidade de frameworks
disponíveis para as aplicações web nos dias de hoje nos permite realizar
combinações que podem aumentar a produtividade e a qualidade dos softwares que
desenvolvemos. No entanto, muitas vezes essas combinações não são tão simples,
pois envolvem a manipulação de recursos ou arquivos compartilhados entre os
frameworks. Este é o caso da integração entre o JSF 2 e o Spring 3.
O JavaServer Faces é uma tecnologia
usada para criar aplicações web MVC através de componentes ricos para a interface
com o usuário (UI). Apesar de ser muito boa no que se propõe a fazer, existem
pontos importantes que uma boa aplicação deveria ter e que não são contemplados
pelo JSF, como por exemplo, permitir o uso da injeção de dependências para
diminuir o acoplamento e facilitar os testes, apoiar o desenvolvedor no acesso
a dados, garantir a segurança da aplicação, entre diversas outras questões.
Estes requisitos são contemplados pelo Spring Framework, uma ferramenta
extremamente poderosa que apesar de possuir um módulo para auxiliar o
desenvolvimento web chamado Spring MVC, não utiliza a ideia de componentes de
interface para a camada de visão, como é o caso do JSF.
Podemos então unir estas duas
tecnologias e tirar o máximo de proveito de cada uma. Porém, integrá-las não é
uma tarefa trivial, e devido a isso, diversas abordagens foram criadas. Uma
opção que consegue aproveitar os principais benefícios do JSF e do Spring de
maneira satisfatória é a utilização de um terceiro framework, denominado Spring
Web Flow.
O Spring Web Flow é uma ferramenta
de workflow com o objetivo de controlar o fluxo das páginas da
aplicação. Além desta, ele possui outras funcionalidades, como a capacidade de
integrar o JSF 2 com o Spring 3. Este artigo mostrará como isso acontece através
de exemplos de fluxos e de uma nova arquitetura que descreve a relação entre os
três frameworks. Também serão apresentadas as configurações necessárias para
tornar suas aplicações web integradas e as vantagens e desvantagens envolvidas
neste processo.
Workflow: Segundo a Workflow Management Coalition, workflow é a
automação de um processo, no todo ou em parte, durante o qual documentos,
informações ou tarefas são transferidos entre as entidades participantes, de
acordo com um conjunto definido de regras, para alcançar um determinado
objetivo nos negócios. Um workflow é composto por um conjunto de passos,
conectados entre si através de transições. Cada passo possui uma ou mais ações.
Essas ações podem ser executadas pelos usuários, como o preenchimento de um
formulário eletrônico; ou pelo próprio sistema, como a execução de um cálculo
ou envio de e-mail. O resultado da execução de uma ação pode resultar na
mudança de passo, através de uma transição, ou então no fim do workflow.
O
que sua aplicação web ganha utilizando JSF 2?
O JSF é uma especificação criada
para auxiliar o desenvolvimento de aplicações web MVC que utilizam Java. O seu
uso facilita a construção de uma aplicação organizada em camadas e baseada em
componentes. Estes componentes, por sua vez, permitem ao desenvolvedor criar
interfaces ricas e reutilizáveis, com pouco esforço e sem a necessidade de
escrever dezenas de códigos em JavaScript e CSS.
Com o lançamento da versão 2,
diversas melhorias foram apresentadas para diminuir o número de configurações e
incluir novas funcionalidades, tornando assim o JSF uma opção valiosa para o
desenvolvimento de aplicações web.
Para conhecermos melhor o que o JSF
pode proporcionar às nossas aplicações, vejamos suas principais vantagens:
·
Apoio
na comunicação entre as camadas de uma aplicação MVC. O JSF, através dos
managed beans, permite a comunicação entre as camadas de controle e de visão da
aplicação. Através de annotations, disponíveis na nova versão, essa tarefa
ficou ainda mais simples, deixando de lado inúmeras configurações em arquivos XML;
·
Conjunto
de componentes para interface de usuário (UI). Um dos pontos de destaque do JSF
são os componentes UI capazes de simplificar a construção das páginas da
aplicação, buscando trazer a forma de criar programas desktop para o
desenvolvimento web. Estes componentes mantêm escondida a implementação de
tarefas complexas, disponibilizando ao programador apenas tags com atributos
que descrevem as entradas necessárias para o seu funcionamento;
· "
ATENÇÃO! A exibição deste artigo foi interrompida.
Este é um post disponível para assinantes MVP
5 COMENTÁRIOS
Obrigado pelo comentário.
Atenciosamente,
Equipe Devmedia.

A vídeo aula, não conexão alguma com seu artigo, é uma pena, esperava uma video aula de um projeto como o descrito em seu artigo.
Quando vi o tópico spring 3 e jsf fiquei muito interessado e comecei a lê-lo, mas as transições e estados do web flow, inviabilizaram totalmente esta integração no meu ponto de vista.
Gostaria de saber se não há uma outra forma de fazer esta integração de forma mais transparente sem o web flow?
Caso não haja, se escolher o spring MVC ao invés do jsf, o que poderia utilizar para melhorar a view para deixá-la mais rica?
Obrigado!
Wss
Outra forma de fazer a integração é utilizando o bean SpringBeanFacesELResolver no arquivo de configuração.
Caso prefira usar o Spring MVC recomendo que dê uma olhada em bibliotecas JavaScript como JQuery e ExtJs. Elas podem ser utilizadas facilmente com o Spring MVC e será possível deixar as páginas bem ricas!
Abraços.
Obrigado pelo retorno!
Tbm tenho o desejo de substituir o Hibernate por puro JDBC,
devido a minhas necessidades de me conectar com o mesmo sistema em vários banco de dados.
Seria possível tal abordagem com JSF 2 e Spring? Vi um
artigo na revista 46 que era justamente isto, porém com o JSF 1.
Obrigado Novamente.
Weles!
Space do autor



0
1
