ADD file via upload

杜韦注释
p2x9nfpei 4 months ago
parent cd5f43941e
commit 7395d75b25

@ -0,0 +1,94 @@
// 定义当前类所在的包路径
package com.ServletContextListener;
// 导入MyBatis-Plus实体包装类
import com.baomidou.mybatisplus.mapper.EntityWrapper;
// 导入字典实体类
import com.entity.DictionaryEntity;
// 导入字典服务接口
import com.service.DictionaryService;
// 导入自定义线程方法类
import com.thread.MyThreadMethod;
// 导入日志记录器接口
import org.slf4j.Logger;
// 导入日志工厂类
import org.slf4j.LoggerFactory;
// 导入Spring应用上下文接口
import org.springframework.context.ApplicationContext;
// 导入Web应用上下文工具类
import org.springframework.web.context.support.WebApplicationContextUtils;
// 导入Servlet监听器接口
import javax.servlet.ServletContextListener;
// 导入Servlet上下文事件类
import javax.servlet.ServletContextEvent;
// 导入Web监听器注解
import javax.servlet.annotation.WebListener;
// 导入HashMap实现类
import java.util.HashMap;
// 导入List集合接口
import java.util.List;
// 导入Map集合接口
import java.util.Map;
// 字典初始化监听器类
// 使用@WebListener注解声明为Servlet监听器
// 实现ServletContextListener接口
@WebListener
public class DictionaryServletContextListener implements ServletContextListener {
// 声明日志记录器
private static final Logger logger = LoggerFactory.getLogger(DictionaryServletContextListener.class);
// 声明自定义线程方法对象
private MyThreadMethod myThreadMethod;
// 上下文销毁方法实现
@Override
public void contextDestroyed(ServletContextEvent sce) {
// 记录服务器停止日志
logger.info("----------服务器停止----------");
}
// 上下文初始化方法实现
@Override
public void contextInitialized(ServletContextEvent sce) {
// 获取Spring应用上下文
ApplicationContext appContext = WebApplicationContextUtils.getWebApplicationContext(sce.getServletContext());
// 记录字典表初始化开始日志
logger.info("----------字典表初始化开始----------");
// 从Spring容器获取字典服务实例
DictionaryService dictionaryService = (DictionaryService)appContext.getBean("dictionaryService");
// 查询所有字典数据
List<DictionaryEntity> dictionaryEntities = dictionaryService.selectList(new EntityWrapper<DictionaryEntity>());
// 创建字典映射表
Map<String, Map<Integer,String>> map = new HashMap<>();
// 遍历字典数据并构建映射关系
for(DictionaryEntity d :dictionaryEntities){
// 获取当前字典代码对应的映射表
Map<Integer, String> m = map.get(d.getDicCode());
// 如果映射表为空则新建
if(m ==null || m.isEmpty()){
m = new HashMap<>();
}
// 添加字典项到映射表
m.put(d.getCodeIndex(),d.getIndexName());
// 更新字典映射表
map.put(d.getDicCode(),m);
}
// 将字典映射表存入Servlet上下文
sce.getServletContext().setAttribute("dictionaryMap", map);
// 记录字典表初始化完成日志
logger.info("----------字典表初始化完成----------");
// 记录线程执行开始日志
logger.info("----------线程执行开始----------");
// 初始化并启动自定义线程
if (myThreadMethod == null) {
myThreadMethod = new MyThreadMethod();
myThreadMethod.start(); // 在Servlet上下文初始化时启动线程
}
// 记录线程执行结束日志
logger.info("----------线程执行结束----------");
}
}
Loading…
Cancel
Save