terça-feira, abril 03, 2007

Injeção de dependências com Spring Framework

Dae pessoal.

Semana passada participei de um treinamento de 8h sobre o Spring.

Pra quem não sabe Spring é um frame work de injeção de dependências.

Para que serve, quando usar, se funciona... não me pergunte :P veja você mesmo e teste sobre suas necessidades.

O que eu posso dizer sobre o pouquíssimo que sei até agora é que é bem legal o negócio além de o Spring ter também uma parte que cuida do MVC da aplicação (mas não é necessário usá-lo, você pode desenvolver usando Struts, WebWork, JSF e usá-lo onde for cabível).

Bom, só pra dar um exemplo de uso (útil barbaridade!!! :P):

Uma classe normal:


package estudo.springframework;

public class BeanNormal {

private String mensagem = "Essa é a mensagem padrão.";

public String getMensagem() {
return mensagem;
}

public void setMensagem(String mensagem) {
this.mensagem = mensagem;
}

public BeanNormal(String mensagem) {
super();
this.mensagem = mensagem;
}

public BeanNormal() {
super();
}
}

public class InjetaDependencia {
public static void main (String[] args) {

BeanNormal b0 = new BeanNormal();
System.out.println(b0.getMensagem());

}
}

Bem, agora com o uso do Spring vamos mudar o valor do atributo mensagem injetando um valor em usar o método setMensagem(Srtrin mensagem) da classe:

package estudo.springframework;

import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.core.io.ClassPathResource;

public class InjetaDependencia {
public static void main (String[] args) {

BeanNormal b0 = new BeanNormal();
System.out.println(b0.getMensagem());

final BeanFactory bf = new XmlBeanFactory(
new ClassPathResource("/beannormal.xml"));
final BeanNormal b1 =
(BeanNormal) bf.getBean("beannormal");

System.out.println(b1.getMensagem());

}
}

A saída no primeiro caso seria:
Essa é a mensagem padrão.

Depois que usamos o Spring o que ele faz é injetar alguma coisa em tempo de execução em algum lugar, nossa que definição profunda!

A saída depois que mudamos o código será:

Essa é a mensagem padrão.
Valor injetado pelo Spring ;-)

Bom não me peçam mais do que isso, porque o curso que fiz não passou disto :P e foi muito blablabla pra pouca ação para o meu (humilde) gosto que gosto de aprender com a mão na massa e não vendo slides e tal... mas daqui a uns dias eu posto algo que preste pois vou usá-lo com certeza no meu projeto junto com Hibernate e JSF.

Quem quizer baixar os fontes:

http://geocities.yahoo.com.br/sadbuttruebr/blog/
exemplos_java/BeanNormal.java

http://geocities.yahoo.com.br/sadbuttruebr/blog/
exemplos_java/InjetaDependencia.java

http://br.geocities.com/sadbuttruebr/blog/
exemplos_java/beannormal.xml


Até a próxima e comentem aí!

Nenhum comentário: