21. Conclusão
Vamos recapitular o que foi apresentado neste documento:
- os fundamentos da programação web em Java com 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 esses pontos
Acreditamos que o leitor que chegou até aqui está pronto para desenvolver por conta própria suas próprias aplicações web em Java. Ele também está pronto para abordar outros métodos de desenvolvimento semelhantes aos estudados neste documento. Vale lembrar a arquitetura das aplicações web desenvolvidas aqui:
![]() |
Para aplicativos simples, essa arquitetura é suficiente. Ao escrever vários aplicativos desse tipo, percebe-se que os servlets de dois aplicativos diferentes:
- possuem o mesmo mecanismo para determinar qual método [doAction] deve ser executado para processar a ação solicitada pelo usuário
- na verdade, diferem apenas pelo conteúdo desses métodos [doAction]
A tentação, então, é grande de:
- fatorar o processamento (1) em um servlet genérico, independente da aplicação que o utiliza
- delegar o processamento (2) a classes externas, já que o servlet genérico não sabe em qual aplicação está sendo utilizado
- estabelecer a ligação entre a ação solicitada pelo usuário e a classe que deve processá-la por meio de um arquivo de configuração
Ferramentas, frequentemente chamadas de “frameworks”, surgiram para oferecer essas facilidades aos desenvolvedores. O mais antigo e provavelmente o mais conhecido deles é o Struts (http://struts.apache.org/). O Jakarta Struts é um projeto da Apache Software Foundation (www.apache.org). Esse framework é descrito em (http://tahe.developpez.com/java/struts/).
Surgido mais recentemente, o framework Spring (http://www.springframework.org/) oferece funcionalidades semelhantes às do Struts. Na verdade, trata-se do módulo Spring MVC. Sua utilização foi descrita em vários artigos (http://tahe.developpez.com/java/springmvc-part1/).
O Spring não se limita apenas ao conceito MVC da camada [web] de uma aplicação de três camadas. Ele é útil mesmo em aplicações fora da web.
Assim, concluímos nosso curso implementando uma arquitetura MVC em uma arquitetura de três camadas [web, metier, dao], utilizando um exemplo básico de gerenciamento de uma lista de pessoas.
![]() |
Na versão 1 da aplicação, a lista de pessoas era mantida na memória e desaparecia ao fechar a aplicação web. Nas outras versões, a lista de pessoas é mantida em uma tabela do banco de dados. Utilizamos quatro SGBD diferentes: Firebird, Postgres, MySQL e SQL Server Express.
Graças ao Spring IoC, a camada [web] da versão 1 pôde ser mantida integralmente nas versões seguintes. Assim, demonstramos que é possível construir arquiteturas ntier com camadas independentes.
Com as versões que utilizam um banco de dados, demonstramos 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 em seus arquivos de configuração. A mesma classe [DaoImplCommon] foi utilizada para implementar a camada [dao] nas quatro versões. Para lidar com um problema específico do SGBD Firebird, fomos obrigados a derivar essa classe, mas não a modificá-la.
Por fim, demonstramos como o Spring nos permitiu gerenciar transações de forma declarativa no nível da camada [service].
Recomendamos ao leitor que explore todas as funcionalidades oferecidas por este produto.

