Recentemente, mi sono imbattuto in questa annotazione in un progetto aziendale @PostConstruct e sono rimasto perplesso.
Recensione:
Dopo la consulenza, il riassunto è il seguente:
1. A partire dalla specifica Java EE5, vengono utilizzate due annotazioni che influenzano il ciclo di vita del servlet, @PostConstruct e @PreDestroy, per modificare un metodo void() non statico. Ci sono due modi per scriverlo:
@PostConstruct
public void someMethod(){}
o
public @PostConstruct void someMethod(){}
Il metodo modificato @PostConstruct si attiva quando il server carica il servlet, eVerrà eseguita solo una volta dal server。 PostConstruct viene eseguito dopo il costruttore e prima del metodo init(). Il metodo PreDestroy() viene eseguito dopo che il metodo destroy() è intellettuale
Inoltre, l'ordine di Constructor, @Autowired e @PostConstruct in primavera
In effetti, dal significato letterale di iniezione di dipendenza, possiamo sapere che per iniettare l'oggetto p nell'oggetto A, allora devono prima essere generati l'oggetto A e l'oggetto p prima che l'iniezione possa essere eseguita. Quindi, se una variabile membro p è annotata @Autowried nella classe A, allora @Autowired iniezione avviene dopo che il metodo di costruzione di A è stato eseguito.
Se vuoi completare alcune operazioni di inizializzazione durante la generazione di un oggetto, e queste operazioni dipendono dall'iniezione di dipendenze, allora non puoi farlo nel costruttore. Per farlo, puoi utilizzare un metodo @PostConstruct annotazioni per completare l'inizializzazione, @PostConstruct i metodi annotati verranno chiamati automaticamente dopo il completamento dell'iniezione di dipendenza.
Costruttore >> @Autowired >> @PostConstruct
Esempio:
|