1 package com.supwisdom.institute.backend.admin.bff.listener;
3 import java.util.Timer;
4 import java.util.TimerTask;
6 import javax.servlet.ServletContextEvent;
8 import org.springframework.security.web.access.intercept.FilterInvocationSecurityMetadataSource;
9 import org.springframework.web.context.ContextLoaderListener;
11 import com.supwisdom.institute.backend.admin.bff.security.web.access.intercept.MyFilterInvocationSecurityMetadataSource;
13 import lombok.extern.slf4j.Slf4j;
16 public class MyFilterInvocationSecurityMetadataSourceRefreshListener extends ContextLoaderListener {
18 private FilterInvocationSecurityMetadataSource securityMetadataSource;
19 public void setSecurityMetadataSource(FilterInvocationSecurityMetadataSource securityMetadataSource) {
20 this.securityMetadataSource = securityMetadataSource;
23 private Timer timer = null;
25 private int delay = 1; // 启动后,延迟1分钟
26 private int period = 2; // 定时,每隔2分钟
29 public void contextInitialized(ServletContextEvent event) {
30 // super.contextInitialized(event);
31 log.info("MyFilterInvocationSecurityMetadataSourceRefreshListener.contextInitialized");
33 if (securityMetadataSource instanceof MyFilterInvocationSecurityMetadataSource) {
34 timer = new Timer("定时刷新权限信息", true);
36 timer.scheduleAtFixedRate(new TimerTask() {
40 ((MyFilterInvocationSecurityMetadataSource) securityMetadataSource).refreshRequestMap();
43 }, 1000 * 60 * delay, 1000 * 60 * period);
50 public void contextDestroyed(ServletContextEvent event) {
51 // super.contextDestroyed(event);
52 log.info("MyFilterInvocationSecurityMetadataSourceRefreshListener.contextDestroyed");