Recientemente, me encontré con esta anotación en un @PostConstruct de proyectos de empresa y me quedé desconcertado.
Revisión:
Tras consultar, el resumen es el siguiente:
1. A partir de la especificación Java EE5, se utilizan dos anotaciones que afectan al ciclo de vida del servlet, @PostConstruct y @PreDestroy, para modificar un método void() no estático. Hay dos formas de escribirlo:
@PostConstruct
public void someMethod(){}
o
public @PostConstruct void someMethod(){}
El método modificado @PostConstruct se ejecuta cuando el servidor carga el servlet, ySolo se ejecutará una vez por el servidor。 PostConstruct se ejecuta después del constructor y antes del método init(). El método PreDestroy() se ejecuta después de que el método destroy() sea intelectual
Además, el orden de Constructor, @Autowired y @PostConstruct en primavera
De hecho, por el significado literal de inyección de dependencias, podemos saber que para inyectar el objeto p en el objeto A, primero deben generarse los objetos A y p antes de poder realizar la inyección. Así, si una variable miembro p está anotada @Autowried en clase A, entonces @Autowired inyección ocurre después de ejecutar el método de construcción de A.
Si quieres completar algunas operaciones de inicialización al generar un objeto, y estas operaciones dependen de la inyección de dependencias, entonces no puedes hacerlo en el constructor. Para ello, puedes usar un método @PostConstruct anotaciones para completar la inicialización, @PostConstruct los métodos anotados se llamarán automáticamente una vez completada la inyección de dependencias.
Constructor >> @Autowired >> @PostConstruct
Ejemplo:
|