Spring boot имеет встроенную поддержку ApplicationEvent
s и ApplicationListener
s.Если вам нужно, чтобы они были асинхронными, вы можете использовать ApplicationEventMulticaster
для «выдачи» события, например, см. https://www.baeldung.com/spring-events.
Например, при выходе из системы вы можете иметь applicationEventMulticaster.multicastEvent(new OnLogoutCustomEvent(param1, param2))
(где applicationEventMulticaster
- этоautowired ApplicationEventMulticaster
и OnLogoutCustomEvent
расширяет ApplicationEvent
), а затем имеет LogoutCustomListener (реализует ApplicationListener<OnLogoutCustomEvent>
) для обработки события.
Для тайм-аута токена, я думаю, вам нужно что-то вроде ScheduledExecutorService
для запускаваша логика в момент истечения срока действия.