在Ruoyi中SpringSessionValidationScheduler类通过实现SessionValidationScheduler接口来实现会话验证
SessionValidationScheduler接口中有三个方法:
boolean isEnabled();标志会话验证是否开启
void enableSessionValidation(); 启用会话验证
void disableSessionValidation();禁用会话验证
单纯的通过接口来看我们看不出来什么,我们可以找到SessionValidationScheduler接口的实现类ExecutorServiceSessionValidationScheduler类,这个类还继承了Runnable接口
(后面我们将会说为什么要继承Runnable接口)
我们可以观察ExecutorServiceSessionValidationScheduler类中enableSessionValidation()方法
newSingleThreadScheduledExecutor方法返回一个ScheduledExecutorService类型的实例
ScheduledExecutorService类型的实例中的scheduleAtFixedRate方法意思大概就是以固定时间调度参数一中的线程。
但是在ExecutorServiceSessionValidationScheduler.enableSessionValidation方法中scheduleAtFixedRate方法参数一为this也就是ExecutorServiceSessionValidationScheduler类本身的对象,因为我刚才说了ExecutorServiceSessionValidationScheduler实现了Runnable接口所以这个方法会以固定时间调度ExecutorServiceSessionValidationScheduler中的run方法
ExecutorServiceSessionValidationScheduler.enableSessionValidation方法最后将enabled = true表示验证开启。i
在ExecutorServiceSessionValidationScheduler.run方法中调用了sessionManager.validateSessions方法ExecutorServiceSessionValidation.disableSessionValidation()方法用来停止线程的调度,并将enabled = tfalse表示验证关闭。这时回头看看Ruoyi中的验证会话实现类也就一目了然了。还有最后一点在ExecutorServiceSessionValidationScheduler类中 sessionManager的类型是ValidatingSessionManager,ValidatingSessionManager接口的实现类为
其中就有DefaultWebSessionManager在Ruoyi中OnlineWebSessionManager 继承了DefaultWebSessionManager
并重写了validateSessions方法所以在验证会话中调用的是OnlineWebSessionManager类中的validateSessions方法
Ruoyi管理系统的自定义任务会话验证调度器实现思路就是这样。
Ruoyi管理系统的自定义任务会话验证调度器实现思路
最新推荐文章于 2024-06-11 10:56:03 发布