Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

CDI Não instancia classe

Bom dia a todos. Estou tendo um problema com o CDI. Tenho uma aplicação rest e quando faço uma requisição a um recurso, na classe que tem PATH eu consigo usar o CDI, mas se eu chamar uma outra classe (um DAO por exemplo), não consigo instanciar nenhum objeto através do CDI. EX:

@Path("/cadastro/produto")
public class CadastroProduto {


    //Aqui o CDI instancia a classe. 
    @Inject
    private User user;//Objeto apenas para teste

    @POST
    @Consumes(MediaType.APPLICATION_JSON)
    @Produces(MediaType.APPLICATION_JSON)
    public Response cadastrarProduto(Produto produto){
        try {
            URI uri = URI.create("/cadastro/produto/"+produto.getCodigo());            
            produto = new DAOTeste<>(Produto.class).adiciona(produto);        

            return Response.created(uri).build();
        } catch (ErroCadastrarProdutoException e) {
            return Response.status(500).build();
        }
    }

mas se eu tentar instancia alguma classe dento do DAO, não funciona

public class DAO<T> {

    //Dentro da classe DAO não consegue instanciar
    @Inject
    private User user;

}

Alguém já passou por isso.

2 respostas

Como você está instanciando a classe DAO? Se estiver fazendo new DAO<T>() o CDI não age e, portanto, não consegue instanciar as dependências.

Para que o CDI consiga gerar a classe corretamente, ele tem que participar do processo desde o começo. Se você injetar o próprio DAO, ele vai conseguir injetar o User.

solução!

entendi marcos....eu estou usando new DAO porque não consigo injetar com CDI um dao genérico...tem um artigo da Caelum sobre isso mas não consegui implementar...vlw pela resposta