TRONG>
Atenção: por essa edição ser muito antiga não há arquivo PDF para download.Os artigos dessa edição estão disponíveis somente através do formato HTML. Conhecendo e Aplicando a Injeção de Dependências Cada vez maios se fala sobre o padrão de Injeção de Dependências. Você irá conhecer esse padrão além de aprender como implementá-lo, utilizando o Spring. Daniel Cícero Amadei A injeção de dependências é uma nova tecnologia relativamente nova no mundo do desenvolvimento orientado a objetos, porém é a resposta para uma necessidade antiga: retirar de um objeto o conhecimento sobre como obter os objetos que colaboram com ele, ou seja, as suas dependências. Neste artigo serão apresentadas a teoria básica e as vantagens da injeção de dependências. Veremos também uma introdução ao Spring, onde mostramos como esse framework provê a injeção de dependências para aplicações Java. Em busca do desacoplamento A colaboração entre os objetos em sistemas é primordial, mas se alguns cuidados não forem tomados sobre como essa colaboração ocorrerá,podemos terminar com objetos muito acoplados uns com os outros, dificultando a manutenção, os testes e a evolução de nossos sistemas. Isso nos leva à seguinte pergunta: como desacoplar objetos se eles precisam se comunicar uns com os outros? A codificação baseada em interfaces é um importante primeiro passo. Quando um objeto cliente é implementado baseando-se nas interfaces dos objetos com os quais se relaciona, é possível alterar as implementações dessas interfaces sem precisar modificar o objeto cliente. Um exemplo conhecido desse mecanismo, é a API JDBC, em que as funcionalidades são definidas por interfaces e a implementação fica a cargo dos drivers. Usa a codificação baseada em interfaces promove parte do desacoplamento, porém ainda exige que um objeto conheça a forma de obter suas dependências, criando acoplamento entre esses objetos. É justamente esse problema que a injeção de dependências resolve. Injeção de dependências e containers Com a injeção de dependências, as dependências dos objetos são configuradas declarativamente, em arquivos de configuração e não no código-fonte. A "montagem" dos objetos ocorre através de um container leve (lightweight container), que interpreta as configurações e compõe os objetos baseando-se nelas. O container fica responsável pela criação dos objetos e por resolver e atribuir suas dependências, para que quando os objetos forem solicitados já estejam configurados e inicializados, prontos para o uso. Tipos de injeção de dependências Há dois estilos de injeção de dependências amplamente utilizados: Setter injection - A atribuição das dependências e efetuada através de métodos setPropriedade() (seguindo o padrão JavaBeans). O container invoca esses métodos informando como parâmetro o valor a ser atribuído à propriedade. Constructor injection - A atribuição das dependências ocorre através do construtor da classe. O container fica responsável pela instanciação do objeto utilizando um construtor específico, que deve receber os parâmetros e atribuí-los as propriedades correspondentes. Apresentando o Spring O Spring é um container leve (e também um framework), capaz de realizar a injeção de dependências dos tipos Setter e Constructor. Além dessa capacidade, o Spring provê abstrações e utilitários para várias tecnologias que compõem a família Java EE como JMS, EJB,JavaMail, JCA, JDBC, JNDI e Java Persistence API (parte do novo JavaEE5); também se integra a tecnologias como Programação Orientada a Aspectos (AOP) e ferramentas de mapeamento relacional (Hibernate, iBATISetc.). O núcleo do Spring se concentra no seu arquivo de configuração e na interface org.springframework.beans.factory.BeanFactory, que é responsável pela criação e atribuição das dependidas nos objetos gerenciados pelo container. A BeanFactory organiza a lista de objetos gerenciados, mantendo um nome único para cada um. O método getBean() de BeanFactory recebe um nome como parâmetro e retorna o objeto correspondente (ou lança uma exceção caso ele não exista no container). Primeira aplicação com Spring Nosso primeiro exemplo será o velho e bom "Olá, Mundo". Será criada uma classe simples, contendo uma mensagem cujo valor é atribuído através da injeção de dependência. Depois essa mensagem é impressa no console. Obtendo o Spring O primeiro passo é obter o Spring no endereço springframework.org/download. O download recomendado é a versão 2.0. Baixe o arquivo spring-framework-2.0-rc3-with-dependencies.zip (ou versão mais recente), que já possui as dependências para execução de todos os módulos do Spring. É necessário também obter o Apache Xerces, pois é exigida a presença de um interpretador de XML. Acesse apache.org/dist/xml/xerces-j e realize o download do arquivo Xerces-J-bin.2.8.0.zip. Preparando o ambiente Crie uma pasta em qualquer local, com nome (por exemplo) javamagazine-spring. Descompacte o zip do Spring para uma pasta temporária e copie o arquivo dist/spring.jar e a pasta lib para a nova pasta. Descompacte também o arquivo Xerces-J-bin.2.8.0.zip para uma pasta temporária e copie os arquivos xerceslmpl.jar e xml-apis.jar para javamagazine-spring. Com isso nosso ambiente está pronto. Implementando o exemplo Vamos criar uma subpasta exemplo1, que irá conter os arquivos de nosso primeiro exemplo. Nela iremos codificar a classe OlaMundo, conforme a Listagem 1. Devemos codificar também o arquivo build.xml, que será responsável pela compilação e execução, conforme a Listagem 2. Por fim deve ser criado o applicationContext.xml (o arquivo de configuração do Spring), conforme a Listagem 3. Após a codificação desses itens, basta executar o comando ant dentro da pasta exemplo1. Como resultado, será impresso no console a mensagem: ... 
Quer ler esse conteúdo completo?
Tenha acesso completo