quarta-feira, 25 de janeiro de 2012

Overview do Spring Framework

Spring Framework


Olá pessoal, hoje vou falar um pouco sobre o maravilhoso mundo do Spring, pois quem trabalha com Java com certeza já ouviu falar dele. Esse é apenas o primeiro de muitos outros posts relacionados ao Spring, espero que curtam, um abraço.

O que é Spring?

Spring é um framework escrito em java por Rod Johnson e se baseia no conceito de injeção de dependências e inversão de controle. O Spring faz a injeção de dependências baseado em um arquivo de configuração.Ele controla todo o cliclo de vida dos objetos e trabalha orientado a interfaces possibilitando uma aplicação mais flexível e possibilitando modificar a classe de implementação de qualquer bean sem causar grandes mudanças na aplicação. O Spring possui integração com diversas tecnologias:

  • Integração com os serviços da plataforma java EE;
  • JDBC Template - uma camada em cima do JDBC que abstrai e gerencia todos os  objetos e transações de acesso a banco de dados;
  • Spring MVC - um framework para desenvolvimento de sistemas web utilizando o padrão MVC;
  • Integração com tecnologias de ORM tais como Hibernate e JPA;
  • Agendamento de tarefas com o Quartz;
  • JavaMail;
  • Integração com linguagens dinâmicas como o groovy e o jruby;
  • Integração com tecnologias de Remoting como RMI e JAX RPC;
  • Web services com JAX WS;
  • Gerenciamento de transações;
  • Internacionalização;
  • Suporte a programação orientada a aspectos (AspectJ)



O Spring pode realizar a injeção de dependências via método set e via construtor. A interface BeanFactory é responsável por recuperar uma instância de um bean e ela possui várias implementações como DefaultListableBeanFactory que utiliza arquivos properties para injetar os beans, a XmlBeanFactory que utiliza arquivos XML para a injeção assim como a ApplicationContext que alem de utilizar arquivos XML para injeção dos beans possui suporte a configuração de outros recursos do Spring como o suporte a anotações.

O Spring possibilita o controle do cliclo de vida dos beans tanto na inicialização quanto na destruição. Seja adicionando a configuração dos métodos no arquivo ou implementando as respectivas interfaces InitializeBean e DisposableBean.
O Spring pode fazer a injeção de qualquer objeto Java inclusive de coleções como Map, Set e List e possui suporte a injeção de propriedades muito simplificada.
O Spring possui cinco escopos sendo singleton, prototype, request, session e global_session. Sendo os três ultimos utilizados em aplicações web apenas. O escopo singleton é padrão caso não seja especificado nenhum escopo na configuração do bean no arquivo.
Para que o Spring injete as dependências internas de um bean, na configuração do bean é necessário adiconar um atributo ref à propriedade que necessitar da dependência e essa dependência também precisa estar configurada no arquivo de configuração.
Alem de todo o suporte a estas tecnologias o Spring possui uma vasta comunidade ativa que contribui no desenvolvimento do framework, um plugin chamado Spring IDE para dar suporte a plataforma Eclipse e integração com outros ambientes de desenvolvimento como o Netbeans e o IntelliJ Idea.

O Spring também possui uma versão para a tecnologia .net chamada de Spring.Net e abrange as mesmas funcionalidade de Ioc e DI que a versão para Java.
O Spring ainda possui um módulo para a trabalhar com autenticação e autorização de usuários chamado Spring Security que da suporte a várias tecnologias de segurança como JAAS, LDAP, OpenID, CAS e outras.Também possui um plugin para geração de documentação semelhante ao JavaDoc. Integração com tecnologias para desenvolvimento web como Struts, Jsf e tecnologias para trabalhar com mapeamento objeto relacional como o hibernate, o IBatis, o JPA e outras.