springboot监听机制是对java监听机制的封装
springboot在项目启动时,会对几个监听器回调,我们可以实现这些监听器接口,在项目启动时完成一些操作。
springboot提供了4个监听接口:如下
-
ApplicationContextInitializer
-
SpringApplicationRunListener
-
ApplicationRunner
-
CommandLineRunner
我们使用只要写实现类复写方法即可。
然后启动项目,我们发现只有两个监听类被自动执行了。如下:
看到这里,也就是说在项目启动时,会自动加载两个监听类,而另外两个监听类没有加载执行。那么,这两个自动加载的监听类有什么作用呢?用在哪?使用场景:如我们在使用redis缓存时,我们希望在项目启动时,redis能够把数据库中的一些信息提前加载进来作为缓存。为什么这样做呢?为了防止第一个人去访问时,缓存中没数据,那么只能查数据库,则效率就会低。这个动作,我们叫做缓存预热。
接下来,我们打印一下参数信息。
其实,结果是[]。空数组。
我们配置下参数。
在打印:
也就是说args里面就是我们配置的参数。
当然,另外两种需要我们配置后才能使用。
在spring.factories文件中配置即可,
这时启动项目会报错,需要在MySpringApplicationRunListener实现类中加上有参构造方法。可以看接口源码。
在启动项目
这里模拟了springboot另外两种监听接口的运行时机。可以看到接口中的哪些方法先被执行。当然这里只是演示监听接口的使用方式,以后代码中,需要在各个时机写具体的业务逻辑的操作。