21. Conclusão
Vamos rever o que foi apresentado neste documento:
- os conceitos básicos da programação web em Java utilizando servlets e páginas JSP
- uma introdução à arquitetura MVC
- uma introdução à arquitetura de três camadas
- uma introdução ao Spring IoC
- exemplos para ilustrar estes pontos
Acreditamos que os leitores que chegaram a este ponto estão prontos para desenvolver as suas próprias aplicações web em Java. Estão também prontos para abordar outros métodos de desenvolvimento semelhantes aos abordados neste documento. Vamos rever a arquitetura das aplicações web desenvolvidas aqui:
![]() |
Para aplicações simples, esta arquitetura é suficiente. Depois de ter escrito várias aplicações deste tipo, irá notar que os servlets de duas aplicações diferentes:
- utilizam o mesmo mecanismo para determinar qual o método [doAction] a executar para processar a ação solicitada pelo utilizador
- na verdade, diferem apenas no conteúdo desses métodos [doAction]
A tentação é então forte de:
- fatorizar o processamento (1) num servlet genérico que não tem conhecimento da aplicação que o utiliza
- delegar o processamento (2) a classes externas, uma vez que o servlet genérico não sabe em que aplicação está a ser utilizado
- vincular a ação solicitada pelo utilizador à classe que deve processá-la utilizando um ficheiro de configuração
Surgiram ferramentas, frequentemente denominadas «frameworks», para proporcionar estas capacidades aos programadores. A mais antiga e provavelmente a mais conhecida delas é o Struts (http://struts.apache.org/). O Jakarta Struts é um projeto da Apache Software Foundation (www.apache.org). Este framework é descrito em (http://tahe.developpez.com/java/struts/).
O framework Spring (http://www.springframework.org/), que surgiu mais recentemente, oferece funcionalidades semelhantes às do Struts. Especificamente, isto refere-se ao seu módulo Spring MVC. A sua utilização foi descrita em vários artigos (http://tahe.developpez.com/java/springmvc-part1/).
O Spring não se limita ao conceito MVC da camada [web] de uma aplicação de três camadas. É útil mesmo em aplicações fora da web.
Assim, concluímos o nosso curso implementando uma arquitetura MVC dentro de uma arquitetura de três camadas [web, lógica de negócio, DAO] utilizando um exemplo básico de gestão de uma lista de pessoas.
![]() |
Na versão 1 da aplicação, a lista de pessoas era mantida na memória e desaparecia quando a aplicação web era encerrada. Nas outras versões, a lista de pessoas é armazenada numa tabela de base de dados. Utilizámos quatro SGBDs diferentes: Firebird, Postgres, MySQL e SQL Server Express.
Graças ao Spring IoC, a camada [web] da versão 1 pôde ser totalmente mantida nas versões subsequentes. Assim, demonstrámos que é possível construir arquiteturas de n camadas com camadas independentes.
Com as versões que utilizam uma base de dados, demonstrámos a contribuição do Spring para a construção das camadas [DAO] e [service]. Graças à integração do Spring com o iBATIS, conseguimos construir quatro versões que diferem apenas nos seus ficheiros de configuração. A mesma classe [DaoImplCommon] foi utilizada para implementar a camada [dao] nas quatro versões. Para resolver um problema específico do SGBD Firebird, tivemos de derivar esta classe, mas não foi necessário modificá-la.
Por fim, demonstrámos como o Spring nos permitiu gerir transações de forma declarativa na camada [service].
Os leitores são encorajados a explorar todas as funcionalidades oferecidas por este produto.

