Artigo da WebMobile 10 - Introdução ao Spring Framework 2.0
Artigo Originalmente publicado na WebMobile 10.
Clique aqui para ler este artigo em pdf
Clique aqui para ler todos os artigos desta edição
Introdução ao Spring Framework 2.0
O primeiro de três artigos, indo do básico até os recursos avançados do Spring Framework
Design patterns evoluem. Frameworks são o resultado do amadurecimento da tecnologia e do uso ostensivo de design patterns. Depois da primeira onda de “MVC”, soluções completas J2EE se apresentam na forma de “lightweight containers”. Estes são uma abordagem contraria ao que podemos encontrar nos servidores de aplicação J2EE. Esses servidores são normalmente cheios de recursos, pesados e ocupam muita memória, com o objetivo de fornecer uma infra-estrutura poderosa e complexa, necessária a uma pequena parte das aplicações desenvolvidas hoje em dia. Nesse artigo, veremos uma abordagem simples, leve e com todos os recursos necessários para a grande maioria das aplicações. Bem vindo ao Spring Framework.
Há alguns anos a programação orientada a componentes se tornou o Santo Graal da engenharia de software contemporânea. Vários fatores contribuíram para isto, como a alta complexidade da orientação a objeto em projetos de grande porte, devido a fatores como a herança de classes concretas e a grande quantidade de código necessária para configurar diversos objetos e fornecer as dependências de cada um deles (“plumbing code”) em aplicações maiores.
A arquitetura orientada a componentes emergiu para sanar estas limitações. Mas, aí aparece um outro problema: como gerenciar uma arquitetura baseada em dezenas (em alguns casos milhares) de componentes?
O Spring Framework é uma das respostas para estes problemas. A base do Spring Framework é um container de injeção de dependências (também conhecida como “Principio Hollywood”, alusão a uma máxima do mercado cinematográfico: “Não nos chame, nós chamamos você!”).
Para entender o funcionamento do Spring Framework e podermos utilizar com eficácia todos os recursos disponibilizados tanto para desenvolvimento web quanto para desenvolvimento Desktop, é necessário primeiro entender alguns conceitos que são a base deste framework, como, injeção de dependências, utilização de proxies de objetos e programação orientada a interfaces.
Neste primeiro artigo vamos nos concentrar principalmente nestes conceitos. Tentaremos mostrar como eles são implementados no framework e como eles podem ser usados durante o desenvolvimento de uma aplicação. Nos demais artigos dessa série, veremos como utilizar o Spring MVC no desenvolvimento de uma aplicação web, e com é feito o controle de transações, o suporte a AOP (aspect oriented programming), os recursos avançados do framework e como utilizar os pontos de extensão disponibilizados para facilitar ainda mais o desenvolvimento de aplicações.
Injeção de dependências
O principal componente disponibilizado pelo Spring Framework é um container de injeção de dependências. Por este motivo, é imprescindível que tenhamos bem claro o que isto significa e por que isto pode ajudar a simplificar o código das aplicações desenvolvidas.
Injeção de dependências consiste em uma abordagem de programação onde os relacionamentos de um objeto, também conhecidos como dependências, não são implementados pelo desenvolvedor. Estas dependências seriam fornecidas por algo parecido com uma fábrica de componentes, para a qual solicitamos uma instancia do componente desejado. É, portanto, responsabilidade dessa fábrica realizar as seguintes operações: cuidar do ciclo de vida do componente, configurar todas as suas propriedades, verificar se o componente solicitado depende de algum outro, e caso positivo, fornecer esta dependência para o componente automaticamente. Para que isto seja possível, a abordagem adotada pelo Spring Framework é separar a configuração do código da aplicação.
O Spring Framework utiliza um arquivo em formato XML para especificar o relacionamento entre os componentes e os valores para outras propriedades que precisem ser configuradas. Uma das premissas adotadas pelo framework é que Java Beans são uma ótima forma de configurar uma aplicação. Partindo disto, é possível utilizar o arquivo de configuração do Spring Framework para configurar o valor de qualquer tipo de propriedades de Java Beans, e não apenas relacionamento/dependências entre componentes.
Para facilitar o entendimento, vamos utilizar um exemplo de uma aplicação simples. Na Listagem 1 mostramos como ela poderia ser implementada sem um container de injeção de dependências e na Listagem 2 mostramos como seria sua implementação utilizando essa abordagem.
Listagem 1. Aplicação sem Injeção de Dependências.
package oldexample;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import org.springframework.jdbc.datasource.DriverManagerDataSource;
public class TesteMain {
private Connection " [...] continue lendo...
Artigos relacionados
-
Artigo
-
Artigo
-
Artigo
-
Artigo
-
Artigo