web项目启动执行方法
近期在项目中需要将用户在web启动时就查询出来,当作缓存使用。
一、首先需要实现 ServletContextListener 接口
public class UserCacheUtils implements ServletContextListener { /**
* web服务器启动时执行
*/
@Override
public void contextInitialized(ServletContextEvent sce) {
System.out.println("启动");
} /**
* 消亡时执行
*/
@Override
public void contextDestroyed(ServletContextEvent sce) {
System.out.println("关闭");
} }
ServletContextListener 接口中有2个方法 contextInitialized 方法在web容器创建时执行,而 contextDestroyed 是在容器销毁时执行,所以我们可以将我们需要执行的代码加入到上述2个方法中。
二、Web.xml 配置监听
我们要想执行上述代码就必须在Web.xml中配置监听去监听这个类。
<!-- 配置用户缓存监听路径 -->
<listener>
<listener-class>com.dffk.audsys.common.util.UserCacheUtils</listener-class>
</listener>
这里要配置自己的类。
三、Bean 注入
在这个类中,我们是不可以通过 @Autowired 获取到需要注入的 Bean ,这里我们需要使用 spring 进行对象注入。
public class UserCacheUtils implements ServletContextListener { //获取spring注入的bean对象
private WebApplicationContext springContext; @Autowired
private SysUserMapper sysUserMapper; /**
* 存放所有人员信息,key为username
*/
public static Map<String, SysUser> userMap;
/**
* web服务器启动时执行
*/
@Override
public void contextInitialized(ServletContextEvent sce) {
springContext = WebApplicationContextUtils.getWebApplicationContext(sce.getServletContext());
if(springContext != null){
sysUserMapper = (SysUserMapper)springContext.getBean("sysUserMapper");
}else{
System.out.println("获取应用程序上下文失败!");
return;
}
System.out.println("启动");
getUsers();
} /**
* 缓存人员信息
*/
public void getUsers () {
List<SysUser> users = sysUserMapper.findAllUsers();
users.stream().forEach((e) -> {
userMap.put(e.getUserName(), e);
});
userMap.keySet().stream().forEach(System.out :: println);
} /**
* 消亡时执行
*/
@Override
public void contextDestroyed(ServletContextEvent sce) {
System.out.println("关闭");
} }
以上在 contextInitialized 方法中首先去初始化 需要注入的 bean,然后再去执行自己的方法。我的方法主要是为了将人员信息缓存下来。
web项目启动执行方法的更多相关文章
- 详解Java Web项目启动执行顺序
一. web.xml加载过程(步骤): 启动web项目,容器(如Tomcat.Apache)会去读取它的配置文件web.xml 中的两个节点,context-param和listener. 紧接着,容 ...
- Java Web项目启动执行顺序
一. 1.启动一个WEB项目,WEB容器会先去读取它的配置文件web.xml,读取<context-param>和<listener>两个节点. 2.接着,容器创建一个Serv ...
- web项目启动流程探索
在web项目的启动过程中,我们希望知道它的一般流程是什么,这样我们就可以在各个流程中加入相应的功能,或者对于我们排错也有帮助. 我们知道,当我们启动tomcat容器以后,容器首先初始化一些必要的组件, ...
- 关于idea中,web项目启动tomcat,访问资源报错404
背景: web项目启动tomcat,访问相应的资源,报错404,前提资源路径是没错的. 原因: 1.确定是不是web项目 不是的话: 配置web-inf的路径和webroot(web根目录)的路径 2 ...
- 在web项目启动时,使用监听器来执行某个方法
在web项目中有很多时候需要在项目启动时就执行一些方法,而且只需要执行一次,比如:加载解析自定义的配置文件.初始化数据库信息等等,在项目启动时就直接执行一些方法,可以减少很多繁琐的操作. 这里写了个简 ...
- 在web项目启动时,执行某个方法
在web项目中有很多时候需要在项目启动时就执行一些方法,而且只需要执行一次,比如:加载解析自定义的配置文件.初始化数据库信息等等,在项目启动时就直接执行一些方法,可以减少很多繁琐的操作. 在工作中遇到 ...
- 在web项目启动时执行某个方法
在web项目中有很多时候需要在项目启动时就执行一些方法,而且只需要执行一次,比如:加载解析自定义的配置文件.初始化数据库信息等等,在项目启动时就直接执行一些方法,可以减少很多繁琐的操作. 在工作中遇到 ...
- web项目启动时,自动执行代码的几种方式
在项目开发过程中,往往需要一些功能随着项目启动而优先启动,下面我总结几种方式(非spring boot) spring boot的参考 spring boot 学习之路9 (项目启动后就执行特定方法) ...
- java web项目启动加载顺序
转载:https://www.cnblogs.com/writeLessDoMore/p/6935524.html web.xml加载过程(步骤): 1.启动WEB项目的时候,容器(如:T ...
随机推荐
- 【BZOJ4552】【HEOI2016】排序 [二分答案][线段树]
排序 Time Limit: 60 Sec Memory Limit: 256 MB[Submit][Status][Discuss] Description 在2016年,佳媛姐姐喜欢上了数字序列 ...
- python小爬虫练手
一个人无聊,写了个小爬虫爬取不可描述图片.... 代码太短,就暂时先往这里贴一下做备份吧. 注:这是很严肃的技术研究,当然爬下来的图片我会带着批判性的眼光审查一遍的.... :) #! /usr/ ...
- CAD启动提示"是否关闭命令行"不管点击什么,都会闪退的解决办法
AutoCAD splash screen starts up and then closes AutoCAD splash screen starts up and then closes (S ...
- SSL handshake failed: SSL error: Key usage violation in certificate has been detected.
sudo apt-get install libneon27-dev cd /usr/libsudo mv libneon-gnutls.so.27 libneon-gnutls.so.27.olds ...
- kvm 简单了解
网络: *主机(装有ESX的PC服务器)简称host,虚拟机简称guest *Host的一个或多个网卡组成一个虚拟交换机,虚拟交换机上创建端口组label,端口组指定vlan tag,虚拟机指定网络标 ...
- leetcode 之Valid Sudoku(七)
判断行.列.九宫格内数字是否重复. 按照行.列.九宫格进行检查即可. bool validSudoku(const vector<vector<char>>& boar ...
- Java学习(一)Scanner报错java.util.NoSuchElementException
我在一个方法A中使用了Scanner的 Scanner input=new Scanner(System.in),随后又将其关闭了,因为Eclipse里面你若不关闭,他会有一个warning:Reso ...
- 以太坊go-ethereum项目源码本地环境搭建
如果要深入了解go-ethereum项目的实现与机制,看源代码是必不可少的.今天这篇博客就简单介绍一下如何在本地搭建项目的开发环境. GO语言环境搭建 以win8为例,访问地址https://gola ...
- PhpStorm函数注释的设置
首先,PhpStorm中文件.类.函数等注释的设置在:setting->Editor->FIle and Code Template->Includes下设置即可,其中方法的默认是这 ...
- Validating a Model