Na palestra que realizei no último TDC junto com o Ricardo Jun, colocamos dois slides na apresentação que chamamos de
Ecossistema Spring. Estes slides foram muito apreciados por várias pessoas que viram a apresentação. Como tivemos muitos feedbacks positivos sobre estes slides, gostaria de compartilhar com vocês as imagens utilizadas para representar o ecossistema.
A primeira imagem ilustra as integrações com diversos fremeworks e serviços Java EE que o
Spring Framework proporciona. Estas integrações estão todas disponíveis num único JAR (spring.jar).

Os elementos folha neste diagrama representam as tecnologias ou frameworks que o Spring Framework permite integração sem reinventar a roda. Em alguns casos o Spring Framework traz uma implementação própria como, por exemplo, o Spring MVC e Spring JDBC (templates e datasources). A seguir alguns destas caixinhas são detalhadas:
- Core: Implementa o contêiner IoC;
- Web: Recursos para implementação de aplicações Web: integração com frameworks MVC, implementação própria de MVC e integração com tecnologias de visualização;
- DAO: Classes utilitárias para desenvolvimento de DAO's com JDBC e gerenciamento de transações;
- AOP: Disponibiliza o conceito de aspectos via AOP Alliance e AspectJ para integrar os POJO's com os serviços enterprise;
- ORM: Implementa o suporte para integração com frameworks de mapeamento objeto/relacional;
- Java EE: Classes utilitárias para integração com serviços Java EE;
- Remoting: Expõe os métodos dos POJO's para invocação remota.
A próxima imagem ilustra o que é chamado de
Spring Portfolio. Este portfolio é composto por diversos projetos que complementam o Spring Framework e utilizam as mesmas boas práticas sugeridas pelo Spring. Neste portfolio, pelo menos os seguintes recursos são disponibilizados: Segurança, integração com outros frameworks, processos batch, OSGi e ferramentas de desenvolvimento.

Neste diagrama, os elementos vinculados ao Spring Framework são pacotes distribuídos separadamente e disponíveis em um ou mais arquivos JAR. Cada produto tem uma página própria de documentação e download que são acessíveis na página
Spring Projects. A seguir alguns destas caixinhas são detalhadas:
- Spring Security: Segurança declarativa via XML ou anotações com suporte a AOP e integração com tecnologias de segurança: JAAS, LDAP, DAO, OpenID, CAS, X509, Windows NTLM;
- Spring Web Service: Suporte a Web Services a partir da definição do XML Schema e WSDL (Data Contract e Service Contract);
- Spring Web Flow: Suporte ao controle de fluxo de navegação Web, integração com JSF, conversação e Ajax;
- Dynamic Modules for OSGi: Simplifica o uso da API OSGi através do Spring com POJO's;
- Spring Modules: Projeto guarda-chuva que implementa a integração com diversos outros frameworks e ferramentas;
- Spring Rich Client: Recursos para desenvolvimento desktop com Swing e Spring;
- Spring JavaConfig: Suporte a configuração dos beans programaticamente sem usar XML ou anotações;
- Spring LDAP: Classes utilitárias para interação com um serviço de Lightweight Directory Access Protocol (LDAP);
- Spring Integration: Implementa o suporte para integração de sistemas via mensagens (EAI e Enterprise Integration Patterns);
- Spring Batch: Suporte a execução de processos em batch de longa duração;
- Spring IDE: Plugin para incrementar produtividade durante o desenvolvimento com o Eclipse;
- Spring BeanDoc: Ferramenta para gerar documentação semelhante ao Javadoc;
- Spring .NET: Porte de parte do Spring Framework para desenvolvimento de aplicações .NET!
Alguns destes produtos estão consolidados e maduros, outros estão em desenvolvimento. Portanto, na hora de usar num projeto importante ou em produção, será necessário verificar o status atual do projeto correspondente.
Veja a seguir os slide usados na palestra.
Todas os slides das palestras do evento TDC2008 estão disponíveis para download no site da
Globalcode.
Para fechar este post, algumas frases que definem o Spring Framework:
- Um framework de código aberto e uso livre, sob licença Apache, criado por Rod Johnson;
- Implementa um contêiner de injeção de dependências (DI) e inversão de controle (IoC);
- Um framework para programação orientada a aspectos (AOP);
- Um framework para integração de aplicações com serviços Java EE;
- Um framework para integração com outros frameworks que implementam serviços enterprise;
- Não é uma tecnologia padrão mantida pelo JCP;
- Não é um concorrente da plataforma Java EE;
- Não é a reinvenção da roda!
Then, enjoy it!