Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

585
Vistas
La anotación Spring Boot @PreDestroy no funciona

Soy nuevo en Spring Boot, y tengo una aplicación Spring Boot que parece estar ignorando la anotación @PreDestroy: cuando ejecuto desde la línea de comandos o a través de Eclipse, nunca veo que se ejecuta el código @PreDestroy cuando la aplicación es el apagado (por ejemplo, a través de ctrl-c)

El código está debajo...

Aplicación.java:

 @SpringBootApplication public class Application { @Autowired private MessageProcessor messageProcessor; public static void main(String[] args) { SpringApplication.run(Application.class, args); } @PostConstruct public void init() { messageProcessor.run(); } }

Configuración del procesador de mensajes:

 @Configuration public class MessageProcessorConfiguration { @Bean public MessageProcessor messageProcessor() { return new MessageProcessorImpl(); } }

Procesador de mensajes:

 public class MessageProcessorImpl implements MessageProcessor { @Override public void run() { while (isActive()) { … } } @PreDestroy public void shutdown() { System.out.println("MessageProcessorImpl - shutting down"); } }
over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

Gancho de apagado del registro de Spring Boot durante la creación del contexto, consulte el método org.springframework.context.support.AbstractApplicationContext#registerShutdownHook . Como resultado, el contexto debe cerrarse en la combinación crtl+c (si ejecuta su aplicación a través java -jar app.jar cmd) y que a su vez activa su método @Predestroy . Esto funciona para mí.

No veo ningún comentario en tu código. Puedo sugerir anotar su bean MessageProcessorImpl con la anotación @Component en lugar de una declaración manual de @Bean .

over 4 years ago · Santiago Trujillo Denunciar

0

@PreDestroy no funciona cuando Scope(value=ConfigurableBeanFactory.SCOPE_PROTOTYPE) se usa en el bean, ya que el bean generado con este método no está completamente administrado por el contenedor IOC.

@PreDestroy funciona cuando Scope(value=ConfigurableBeanFactory.SCOPE_SINGLETON) se usa en el bean.

over 4 years ago · Santiago Trujillo Denunciar

0

Intente agregar esta línea en su xml.

 <bean class="org.springframework.context.annotation.CommonAnnotationBeanPostProcessor" />
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda