这个是在项目启动后,立马启动的一个接口。
参考资料
介绍
在项目中,经常有这样的需求,我们需要在项目启动完立即初始化一些数据(比如缓存等),以便后面调用使用。spring boot
可以通过 CommandLineRunner
接口实现启动加载功能。
新建一个 Java
文件,类需要用 Component
声明下,需要实现 CommandLineRunner
接口,然后重写run
方法,在 run
方法内编写需要加载的内容。
代码如下:
1 | package com.study.test.startup; |
启动项目,运行结果证明:CommandLineRunner
会在服务启动之后被立即执行。
在项目中,我们可以写一个类继承 CommandLineRunner
接口,然后在实现方法中写多个需要加载的方法,也可以写多个类继承 CommandLineRunner
,这些类之间,可以通过order
注解(@Order(value=1)
)实现先后顺序。
test1.class
1 |
|
test2.class
1 |
|
会先执行 test1
然后再执行 test2
。
总结:
CommandLineRunner
会在服务启动之后被立即执行。CommandLineRunner
可以有多个,且多个直接可以用order
注解进行排序。
还有 @PostConstruct
也可以进行预先初始化。
@PostConstruct
更针对性于当前类文件,而CommandLineRunner
更服务于整个项目。所以在我们使用中,可根据自己的使用场景来进行选择用这两种方式来实现初始化。
具体可以参考