Spring实现自定义监听器

编译环境:idea+spring+springmvc+mybatis+dubbo

应用场景:在一般的javaWeb项目中经常有一些缓存是需要再项目启动的时候加载到内存中,这样就可以使用自定义的监听器来实现。

两种方法:
1、在web.xml中注册一个自定义监听器,新建一个类实现ServletContextListener接口,在contextInitialized方法中写要实现的功能。
Spring实现自定义监听器
2、直接新建一个类实现ServletContextListener接口,加上@WebListener注解
在idea中步骤可以为:
Spring实现自定义监听器
仅仅新建一个listener就足够

但是问题来了,项目启动的时候service还没有注入,此时调用service的方法会报错,因为在web容器中无论是servlet还是Filter都不是Spring容器来管理的。listener的生命周期是web容器维护的,bean的生命周期是由Spring容器来维护的,所以在listener中使用@Resource,listener不认识,可以沟通过如下方法来解决:使用WebApplicationContextUtils工具类,该工具类的作用是获取到spring容器的引用,进而获取到我们需要的bean实例。

Spring实现自定义监听器