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

Com EJB o construtor não é um ponto de injeção de dependência?

Com EJB a injeção é feita apenas no atributo? O construtor não é um ponto de injeção?

3 respostas

Olá Emmanuel.

Com EJB você trabalha o conceito de inversão de controle, ou seja, você tira da sua responsabilidade a criação do objeto e passa para o container (administrador EJB).

Sendo assim, basta você usar a anotação @Inject que por baixo dos panos o container fará a instanciação para você. Se você criar o objeto no construtor, você tá assumindo a responsabilidade e assim deixando de usar os inúmeros benefícios do EJB.

Com EJB você transforma os objetos em "super objetos" e desacopla o seu código, podendo inclusive escrever um método que ensina (método produtor) como instanciar determinadas classes. Além disso, quando o objeto é injetado pelo EJB Container, você aproveita os recursos de JTA, Pooling, Scheduling etc.

solução!

Oi Emmanuel,

Complementando a resposta de Bodão, o EJB puro só aceita a injeção via atributo sim, infelizmente. Se você misturar com o CDI, vai poder usar o construtor :).

Lembrando que usar definir o construtor não impede você de trabalhar com um container de injeção, não na maioria das tecnologias... Infelizmente o EJB decidiu não usar :(.

Valeu pelos esclarecimentos Bodão e Alberto, grande abraço! Acabei marcando o comentário do Alberto, que era uma complementação do comentário do Bodão, como solução. Não consigo desfazer e marcar a resposta do Bodão como solução. Desculpem a trapalhada.