近期在项目中需要将用户在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项目启动执行方法的更多相关文章

  1. 详解Java Web项目启动执行顺序

    一. web.xml加载过程(步骤): 启动web项目,容器(如Tomcat.Apache)会去读取它的配置文件web.xml 中的两个节点,context-param和listener. 紧接着,容 ...

  2. Java Web项目启动执行顺序

    一. 1.启动一个WEB项目,WEB容器会先去读取它的配置文件web.xml,读取<context-param>和<listener>两个节点. 2.接着,容器创建一个Serv ...

  3. web项目启动流程探索

    在web项目的启动过程中,我们希望知道它的一般流程是什么,这样我们就可以在各个流程中加入相应的功能,或者对于我们排错也有帮助. 我们知道,当我们启动tomcat容器以后,容器首先初始化一些必要的组件, ...

  4. 关于idea中,web项目启动tomcat,访问资源报错404

    背景: web项目启动tomcat,访问相应的资源,报错404,前提资源路径是没错的. 原因: 1.确定是不是web项目 不是的话: 配置web-inf的路径和webroot(web根目录)的路径 2 ...

  5. 在web项目启动时,使用监听器来执行某个方法

    在web项目中有很多时候需要在项目启动时就执行一些方法,而且只需要执行一次,比如:加载解析自定义的配置文件.初始化数据库信息等等,在项目启动时就直接执行一些方法,可以减少很多繁琐的操作. 这里写了个简 ...

  6. 在web项目启动时,执行某个方法

    在web项目中有很多时候需要在项目启动时就执行一些方法,而且只需要执行一次,比如:加载解析自定义的配置文件.初始化数据库信息等等,在项目启动时就直接执行一些方法,可以减少很多繁琐的操作. 在工作中遇到 ...

  7. 在web项目启动时执行某个方法

    在web项目中有很多时候需要在项目启动时就执行一些方法,而且只需要执行一次,比如:加载解析自定义的配置文件.初始化数据库信息等等,在项目启动时就直接执行一些方法,可以减少很多繁琐的操作. 在工作中遇到 ...

  8. web项目启动时,自动执行代码的几种方式

    在项目开发过程中,往往需要一些功能随着项目启动而优先启动,下面我总结几种方式(非spring boot) spring boot的参考 spring boot 学习之路9 (项目启动后就执行特定方法) ...

  9. java web项目启动加载顺序

    转载:https://www.cnblogs.com/writeLessDoMore/p/6935524.html web.xml加载过程(步骤):       1.启动WEB项目的时候,容器(如:T ...

随机推荐

  1. this new call() apply()

    如果没接触过动态语言,以编译型语言的思维方式去理解javaScript将会有种神奇而怪异的感觉,因为意识上往往不可能的事偏偏就发生了,甚至觉得不可理喻.如果在学JavaScript这自由而变幻无穷的语 ...

  2. .net core 集成 autofac.

    1. Install Install-Package Autofac Install-Package Autofac.Extensions.DependencyInjection 2.Startup ...

  3. 移动Web界面样式-CSS3

    CSS2.1发布至今已经有7年的历史,在这7年里,互联网的发展 已经发生了翻天覆地的变化.CSS2.1有时候难以满足快速提高性能.提升用户体验的Web应用的需求.CSS3标准的出现就是增强CSS2.1 ...

  4. 【BZOJ】3238: [Ahoi2013]差异

    [题意]给定长度为n的小写字母字符串,令Ti表示以i开头的后缀,求Σ[Ti+Tj-2*lcp(Ti,Tj)],1<=i<j<=n. [算法]后缀自动机 [题解]Σ(Ti+Tj)只与n ...

  5. 【总结】对FFT的理解 / 【洛谷 P3803】 【模板】多项式乘法(FFT)

    题目链接 \(\Huge\text{无图,慎入}\) \(FFT\)即快速傅里叶变换,用于加速多项式乘法. 如果暴力做卷积的话就是一个多项式的每个单项式去乘另一个多项式然后加起来,时间复杂度为\(O( ...

  6. node、npm及node_modules中依赖的版本更新

    好久没用node了,想重新拾起来发现node还有相关模块的版本都太低了,使用npm install全是报版本低的警告. 这里记录一下,版本管理和node_modules更新的方法. 我用的是Windo ...

  7. RMQ之ST求区间最大值

    题目链接:https://cn.vjudge.net/problem/HRBUST-1188 每一次按照二进制的方式进行更新,二维数组dp [i] [j],i表示下标,j表示从i 开始的往后移动2的j ...

  8. PHP对象4: final 不允许重写方法或不允许继承类

    final用在方法中,能继承方法, 不允许重写方法 final用在类声名中, 此类就不能继承 <?php class A{ final function say(){ say 'Ok<br ...

  9. Ubuntu之镜像iso安装系统

    ubuntu的安装 官网下载iso文件,网址:http://releases.ubuntu.com/16.04.4/, 选择:ubuntu-16.04.4-server-amd64.iso: 下载完毕 ...

  10. think php模板的使用

    {include file="../application/public/header.html"}<!-- Jumbotron --><div class=&q ...