Recentemente, me deparei com essa anotação em um projeto da empresa @PostConstruct e fiquei confuso.
Revisar:
Após a consulta, o resumo é o seguinte:
1. A partir da especificação Java EE5, duas anotações que afetam o ciclo de vida do servlet, @PostConstruct e @PreDestroy, são usadas para modificar um método void() não estático. Existem duas formas de escrevê-lo:
@PostConstruct
public void someMethod(){}
ou
public @PostConstruct void someMethod(){}
O método modificado @PostConstruct roda quando o servidor carrega o servlet, eEle será executado apenas uma vez pelo servidor。 O PostConstruct é executado após o construtor e antes do método init(). O método PreDestroy() é executado após o método destroy() ser intelectual
Além disso, a ordem de Constructor, @Autowired e @PostConstruct na primavera
De fato, pelo significado literal da injeção de dependência, podemos saber que, para injetar o objeto p no objeto A, então o objeto A e o objeto p devem primeiro ser gerados antes que a injeção possa ser realizada. Assim, se uma variável membro p for anotada @Autowried na classe A, @Autowired injeção ocorre após a execução do método de construção de A.
Se você quiser completar algumas operações de inicialização ao gerar um objeto, e essas operações dependem da injeção de dependência, então não pode fazer isso no construtor. Para isso, você pode usar um método @PostConstruct anotações para completar a inicialização, @PostConstruct métodos anotados serão automaticamente chamados após a conclusão da injeção de dependência.
Construtor >> @Autowired >> @PostConstruct
Exemplo:
|