Arquivo da tag: IoC

Injeção de Dependência no JSF 2

Como  já  é  do  conhecimento  de  qualquer  desenvolvedor,  cada  classe  em  Java  possui características  específicas  possuindo  seus  atributos  próprios  e  métodos  relacionados  com  suas características e funcionalidades  que precisará realizar. Em  qualquer  aplicação  Orientada  a  Objetos  muitas  vezes  é  necessário  que  uma  classe  use serviços de outras classes. Para que ocorra essa troca de funcionalidades é preciso que uma classe possua a referência da outra classe que deseja usar. Normalmente faríamos isso instânciando a classe ou seja daríamos um ‘new’ no nosso objeto, entretanto hoje será mostrada uma forma para se fazer isso através da Injeção de Dependência do JSF.

Um bom motivo para usarmos Injeção de Dependência em nosso projeto é o desacoplamento do nosso código,  facilidade para reuso e também facilidade para realizar testes.

A  partir  do  JSF  2  isso  ficou  muito  mais  simples  de  ser  feito,  podemos  usar  a  Injeção de Dependência  disponibilizada  por  ele  apenas  utilizando  anotações  em  cima  das  nossas  classes,  abaixo segue uma exemplificação de como podemos fazer isso:

@ManagedBean(name="veiculo")
@ApplicationScoped
public class VeiculoDaoImpl implements VeiculoDao{

//Atributos
//Métodos

//Gets e Sets

}

Primeiramente, damos um nome para no ManagedBean, no exemplo chamamos de veiculo mas pode ser qualquer nome. Esse ManagedBean é a classe que queremos usar, ou seja, queremos injetar essa classe para que a outra classe possa se utilizar de suas funcionalidades.
Note que VeiculoDao é apenas uma interface nela apenas colocamos as assinaturas dos métodos que vamos posteriormente implementar na classe VeiculoDaoImpl, é extremamente importante de criarmos uma interface para cada classe, pois o JSF injeta apenas as os métodos que estão declarados nas interfaces.
Por fim precisamos apenas injetar a classe VeiculoDaoImpl, para isso procedemos da seguinte forma:

@ManagedBean(name="vendaController")
@ApplicationScope
public class VendaController implementes Serializable{

@ManagedProperty(value="#{veiculo}")
private VeiculoDao veiculoDao;

//Gets e Sets

}

Esse segundo ManagedBean é onde nós iremos injetar a nossa classe VeiculoDaoImpl, para fazer isso apenas utilizamos a anotação @ManagedProperty e na propriedade value colocamos o nome dado anteriormente ao nosso ManagedBean, ou seja, “veiculo” outro detalhe importante é criar os Gets e Sets para a classe a ser injetada. Pronto com apenas algumas linhas acabamos de realizar a injeção de dependência do JSF 2.