2c6d2bd64ab8cd35b2f5934d9ba6778148d481ee
[institute/sw-backend.git] /
1 package com.supwisdom.institute.backend.admin.bff.listener;
2
3 import java.util.Timer;
4 import java.util.TimerTask;
5
6 import javax.servlet.ServletContextEvent;
7
8 import org.springframework.security.web.access.intercept.FilterInvocationSecurityMetadataSource;
9 import org.springframework.web.context.ContextLoaderListener;
10
11 import com.supwisdom.institute.backend.admin.bff.security.web.access.intercept.MyFilterInvocationSecurityMetadataSource;
12
13 import lombok.extern.slf4j.Slf4j;
14
15 @Slf4j
16 public class MyFilterInvocationSecurityMetadataSourceRefreshListener extends ContextLoaderListener {
17
18   private FilterInvocationSecurityMetadataSource securityMetadataSource;
19   public void setSecurityMetadataSource(FilterInvocationSecurityMetadataSource securityMetadataSource) {
20     this.securityMetadataSource = securityMetadataSource;
21   }
22
23   private Timer timer = null;
24
25   private int delay = 1; // 启动后,延迟1分钟
26   private int period = 2; // 定时,每隔2分钟
27
28   @Override
29   public void contextInitialized(ServletContextEvent event) {
30     // super.contextInitialized(event);
31     log.info("MyFilterInvocationSecurityMetadataSourceRefreshListener.contextInitialized");
32
33     if (securityMetadataSource instanceof MyFilterInvocationSecurityMetadataSource) {
34       timer = new Timer("定时刷新权限信息", true);
35
36       timer.scheduleAtFixedRate(new TimerTask() {
37
38         @Override
39         public void run() {
40           ((MyFilterInvocationSecurityMetadataSource) securityMetadataSource).refreshRequestMap();
41         }
42
43       }, 1000 * 60 * delay, 1000 * 60 * period);
44
45     }
46
47   }
48
49   @Override
50   public void contextDestroyed(ServletContextEvent event) {
51     // super.contextDestroyed(event);
52     log.info("MyFilterInvocationSecurityMetadataSourceRefreshListener.contextDestroyed");
53
54     if (timer != null) {
55       timer.cancel();
56     }
57   }
58
59 }