Olá desenvolvedores, neste tutorial iremos configurar o nosso projeto com o CDI – Contexts and Dependency Injection, deixando o pronto para colocarmos em prática os conceitos já estudados. Criada para reduzir o acoplamento entre as classes esta especificação é parte integrada da plataforma JAVA a partir do JAVA EE 6.

Qualquer recurso a ser adicionado ao Java como você já sabe começa primeiro pela declaração das dependências no arquivo pom.xml para que o download das respectivas bibliotecas seja realizado. As dependências que iremos declarar é a do weld-servlet e jandex que cujo código poderá obter no repositório do Maven ou copiar da imagem abaixo.

Antes do fechamento do escopo de cada uma das duas dependências adicionadas adicione a tag abaixo:

<scope>compile</scope>

WEBCONTENT/META-INF

O próximo passo é criar dentro da subpasta META-INF da pasta WebContent um arquivo de contexto. Se esta pasta ainda não foi gerada em seu projeto você pode cria-la manualmente, clicando com o botão direito do mouse sobre a pasta WebContente >> New >> Folder, em Folder Name atribua o nome da pasta.

Dentro da pasta META-INF crie um arquivo context.xml, é dentro deste arquivo que adicionaremos a informação de contexto para ativação do CDI. Onde um resource apontando para as classes é configurado fazendo a respectiva ativação.

SRC/META-INF

Dentro da pasta src/main/java temos outra subpasta META-INF qual procederemos com a criação de um arquivo beans.xml vazio. Apague do arquivo inclusive a linha de código que é gerada de forma automática.

WEB.XML

Agora dentro do arquivo web.xml é preciso configurar os Listeners, no arquivo insira os códigos abaixo logo após o “Faces Servlet”.

INICIALIZANDO O PROJETO

Como já é lugar comum, sempre que uma nova dependência e/oi configuração for adicionada ao projeto, é importante limpar o projeto. O que pode parecer irrelevante, mas muitas horas de trabalho já foram empenhadas tentando encontrar o erro e/ou um conflito ocorrido no projeto quando a única coisa que precisava ser feita era limpar o cache do projeto.

Se você utiliza a IDE Eclipse, na barra de menu clique em Project >> Clean, na tela que abrirá selecione o projeto, mantenha selecionada a opção “Clean projects selected below” e clique em OK.

O mesmo raciocínio se aplica ao server, clique com o botão direito do mouse sobre o Tomcat v7.0 Server at Localhost >> Clean. A sua versão do Tomcat pode ser diferente da minha e não tem nenhum problema, apenas execute a limpeza normalmente.

Após realizar esses procedimentos inicie novamente o projeto, para verificar se nenhum problema de conflito foi gerado ao adicionar as novas bibliotecas e configurações.

EM POUCAS PALAVRAS

Neste tutorial realizamos toda a configuração necessária para utilizarmos o CDI, no entanto, antes de começarmos a utilizá-lo de fato, podemos propositalmente causar um erro de injeção de dependências, rodar o projeto e verificar se o erro foi acusado. Se sim, o CDI foi corretamente ativado.

Para causar este erro, no ManagedBean, insira a linha de código abaixo com a respectiva anotação, que informa que estamos usando o CDI.

@Inject
private EntityManager entityManager;