Spring Boot: как узнать, было ли приложение прервано в методе @PreDestroy - PullRequest
0 голосов
/ 25 сентября 2019

У меня есть какой-либо способ узнать, был ли вызван метод @PreDestroy в приложении Spring Boot, потому что был нажат CTRL-C или kill <PID>?

Я хочу отличаться от случая, когдаПриложение регулярно останавливается.(Нет демона, нет веб-сервера)

Справочная информация:

Я использую Spring Boot в качестве бегуна, который запускается в Docker-контейнере по расписанию.Приложение работает и закрывается.kill <PID> происходит, когда вызывается docker stop <containerid>.

1 Ответ

0 голосов
/ 26 сентября 2019

Вы можете написать свой собственный аспект для записи любого @PreDestroy выполнения

@Aspect
@Component
public class CustomAspect {

    @Around("@annotation(javax.annotation.PreDestroy)")
    public Object logPreDestroyExecution(ProceedingJoinPoint joinPoint) throws Throwable {
       // ...
       // get info from joinPoint and log
       // ...
       return joinPoint.proceed();
    } 
}

Более подробный пример: Spring AOP + AspectJ

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...