web项目启动执行方法

  近期在项目中需要将用户在web启动时就查询出来,当作缓存使用。

一、首先需要实现 ServletContextListener 接口

 1 public class UserCacheUtils implements ServletContextListener {
 2
 3     /**
 4      * web服务器启动时执行
 5      */
 6     @Override
 7     public void contextInitialized(ServletContextEvent sce) {
 8       System.out.println("启动");
 9     }
10
11
12
13     /**
14      * 消亡时执行
15      */
16     @Override
17     public void contextDestroyed(ServletContextEvent sce) {
18         System.out.println("关闭");
19     }
20
21 }

  ServletContextListener 接口中有2个方法 contextInitialized 方法在web容器创建时执行,而 contextDestroyed 是在容器销毁时执行,所以我们可以将我们需要执行的代码加入到上述2个方法中。

二、Web.xml 配置监听

  我们要想执行上述代码就必须在Web.xml中配置监听去监听这个类。

1       <!-- 配置用户缓存监听路径 -->
2     <listener>
3           <listener-class>com.dffk.audsys.common.util.UserCacheUtils</listener-class>
4     </listener>

  这里要配置自己的类。

三、Bean 注入

  在这个类中,我们是不可以通过 @Autowired 获取到需要注入的 Bean ,这里我们需要使用 spring 进行对象注入。

 1 public class UserCacheUtils implements ServletContextListener {
 2
 3     //获取spring注入的bean对象
 4     private WebApplicationContext springContext;
 5
 6     @Autowired
 7     private SysUserMapper sysUserMapper;
 8
 9     /**
10      * 存放所有人员信息,key为username
11      */
12     public static Map<String, SysUser> userMap;
13     /**
14      * web服务器启动时执行
15      */
16     @Override
17     public void contextInitialized(ServletContextEvent sce) {
18         springContext = WebApplicationContextUtils.getWebApplicationContext(sce.getServletContext());
19           if(springContext != null){
20               sysUserMapper = (SysUserMapper)springContext.getBean("sysUserMapper");
21           }else{
22            System.out.println("获取应用程序上下文失败!");
23            return;
24           }
25         System.out.println("启动");
26         getUsers();
27     }
28
29     /**
30      * 缓存人员信息
31      */
32     public void getUsers () {
33         List<SysUser> users = sysUserMapper.findAllUsers();
34         users.stream().forEach((e) -> {
35             userMap.put(e.getUserName(), e);
36         });
37         userMap.keySet().stream().forEach(System.out :: println);
38     }
39
40
41     /**
42      * 消亡时执行
43      */
44     @Override
45     public void contextDestroyed(ServletContextEvent sce) {
46         System.out.println("关闭");
47     }
48
49 }

  以上在 contextInitialized 方法中首先去初始化 需要注入的 bean,然后再去执行自己的方法。我的方法主要是为了将人员信息缓存下来。

原文地址:https://www.cnblogs.com/wuyx/p/9158986.html

时间: 2024-11-13 09:30:51

web项目启动执行方法的相关文章

Java Web项目启动执行顺序

一. 1.启动一个WEB项目,WEB容器会先去读取它的配置文件web.xml,读取<context-param>和<listener>两个节点. 2.接着,容器创建一个ServletContext(servlet上下文),这个web项目的所有部分都讲共享这个上下文 3.容器将<context-param>转换为键值对,并交给servletContext. 4.容器创建<listener>中的类实例,创建监听器. 二. load-on-startup 元素在w

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

1.监听(Listener) web文件添加 <listener> <listener-class>cn.ro.common.InitListener</listener-class> </listener> 添加InitListener类,如下 package cn.ro.common; import javax.servlet.ServletContextEvent; import javax.servlet.ServletContextListener

spring配置与Web 项目启动

今天打算学习下spring继承quartz的用法,然后想搭建一个纯净的spring项目用来做相关的实验,虽然只是寥寥几行配置文件,但突然选择性失忆忘了这其中容器加载的过程和配置的意义.复习了下此刻写个随便记录下刚刚的领悟. web.xml配置 <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instanc

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

在web项目中有很多时候需要在项目启动时就执行一些方法,而且只需要执行一次,比如:加载解析自定义的配置文件.初始化数据库信息等等,在项目启动时就直接执行一些方法,可以减少很多繁琐的操作. 在工作中遇到了项目初始数据需要跟其他项目同步的问题,也就是说在项目部署后,启动的时候就要同步另外一个项目的数据,这里写了个简单的实例,用的是监听器机制,创建一个类实现ServletContextListener 接口,实现里面的contextInitialized和contextDestroyed方法. pac

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

在web项目中有很多时候需要在项目启动时就执行一些方法,而且只需要执行一次,比如:加载解析自定义的配置文件.初始化数据库信息等等,在项目启动时就直接执行一些方法,可以减少很多繁琐的操作. 这里写了个简单的实例,用的是监听器机制,创建一个类实现ServletContextListener 接口,实现里面的contextInitialized和contextDestroyed方法. 1 package com.test.listener; 2 3 import javax.servlet.Servl

web项目启动时,自动执行代码

tomcat启动时自动执行,以下两种方法的执行时长,会计算在tomcat的启动时长里. 1.ServletContextListener web.xml配置<listener> <listener-class>com.yuan.framework.GreyClientInitListener</listener-class> </listener> 1 public class GreyClientInitListener implements Servle

java web项目启动加载顺序

web.xml加载过程(步骤):       1.启动WEB项目的时候,容器(如:Tomcat)会去读它的配置文件web.xml.读两个节点: <listener></listener> 和 <context-param></context-param> 2.紧接着,容器创建一个ServletContext(上下文),这个WEB项目所有部分都将共享这个上下文. 3.容器将<context-param></context-param>转

web项目启动过程及web.xml常用标签的作用

<servlet> <servlet-name>CloudEra</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>

web项目启动线程服务

多线程是java入门的必修课程,然而到了接触J2EE时,这份功课就还给了老师了,至少本人是这样的,呵呵.不过等到用到的时候,我还是能想起大概,再加上度娘帮忙,就能重拾回来了,这里我插播一个小故事,是我自身的亲身经历,希望给同道小生有所帮助.以前在做学生的时候,学习java并不是那么用心,有些东西只是知其一不知其二,很多知识点在脑子里有点印象卻不是很深刻,记得有一次我我去一家公司面试,面试官就问我,线程这块,你熟么?作为面试者,谁会说不熟啊,虽然我真的不太熟,但是我当场就回答还行,然后就闹笑话了,