最近做项目需要在项目初始化前加载数据进内存,用到了InitializingBean接口,做一些必要的笔记,一来是对自己学习的知识的巩固,二来对有同样问题的人有参考作用
一 使用场景
最近在项目中需要在项目初始化的时候,对一些常用数据进行缓存,我的第一反应是监听器,所以使用了java的ServletContextListener
全局异常监听器,但是出现了一个问题,就是项目使用的spring,而ServletContextListener监听器是监听的tomcat的启动过程,而不是Spring容器,所以使用ServletContextListener导致Spring中bean
还未初始化成功
,便执行了监听器中的缓存
,导致空指针异常
,所以今天记录一下后面的解决办法!
二 举例
大体思路
:使用spring中的InitializingBean接口,监听spring的启动过程,在spring装载完所有的bean的时候,会自动调用实现InitializingBean的afterPropertiesSet()方法,在里面去调用初始化用的服务或者逻辑就行。
秒杀场景应用举例:
@Controller
@RequestMapping("/miaosha")
public class MiaoshaController implements