Skip to content

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:

  1. utilizam o mesmo mecanismo para determinar qual o método [doAction] a executar para processar a ação solicitada pelo utilizador
  2. 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.