前言:
在我们实际工作中,总会遇到这样需求,在项目启动的时候需要做一些初始化的操作,比如初始化线程池,提前加载好加密证书等。
今天就给大家介绍一个 spring boot 神器,专门帮助大家解决项目启动初始化资源操作。
这个神器就是 commandlinerunner,commandlinerunner 接口的 component 会在所有 spring beans 都初始化之后,springapplication.run() 之前执行,非常适合在应用程序启动之初进行一些数据初始化的工作。 正文:
接下来我们就运用案例测试它如何使用,在测试之前在启动类加两行打印提示,方便我们识别 commandlinerunner 的执行时机。
@springbootapplication
public class springbootrabbitmqapplication {
public static void main(string[] args) {
system.out.println("the service to start");
springapplication.run(springbootrabbitmqapplication.class, args);
system.out.println("the service to started");
}
}
接下来我们直接创建一个类继承 commandlinerunner ,并实现它的 run() 方法。
@component
public class runner implements commandlinerunner {
@override
public void run(string... args) throws exception {
system.out.println("the runner start to initialize ...");
}
}
启动项目进行测试:
...
the service to start.
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: spring boot :: (v2.0.2.release)
...
2021-02-01 11:38:31.314 [main] info o.s.boot.web.embedded.tomcat.tomcatwebserver - tomcat started on port(s): 8078 (http) with context path ''
2021-02-01 11:38:31.317 [main] info com.cn.springbootrabbitmqapplication - started springbootrabbitmqapplication in 4.124 seconds (jvm running for 6.226)
the runner start to initialize ...
the service to started