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

O método em @PostConstruct e atributo em @Inject podem ser private?

Nos exercícios os métodos anotados com @PostConstruct utilizam o modificador default. Eles podem ser private?

E, aproveitando a dúvida, os atributos com @Inject também estão com o modificador default. Posso colocar private neles?

3 respostas

Olá,

Se você implementar dessa forma, verá as mensagens de erro no console do Eclipse.

A sua pergunta deveria ser porque não pode ser private?

E a resposta é: conforme as mensagens de erro, a injeção de dependências falha caso seja private.

solução!

Carlos Vinicius dos Santos Dias, a classe anotada com @PostConstruct tem que ser publica e ter um retorno do tipo void, você pode até retorna algo, porém será ignorado...

sobre a dependência, a classe a ser injeta tem que ser Pública, porém o atributo que recebe a injeção pode ser privado/protected/public , isso não interfere na injeção....

Olá,

Corrigindo a minha resposta anterior:

Annotation Type PostConstruct: http://docs.oracle.com/javaee/7/api/javax/annotation/PostConstruct.html " The method defined on a non-interceptor class MUST HAVE the following signature:

void ()

The method on which PostConstruct is applied MAY be public, protected, package private or private.

The method MUST NOT be static except for the application client.

The method MAY be final.

If the method throws an unchecked exception the class MUST NOT be put into service except in the case of EJBs where the EJB can handle exceptions and even recover from them."

Assim, segundo a documentação acima, o método da anotação PostConstruct pode ser public, protected, package private ou private.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software