SpringBoot----CommandLineRunner
<h2>简介:</h2>
<pre><code>在使用SpringBoot构建项目时,我们通常有一些预先数据的加载。那么SpringBoot提供了一个简单的方式来实现–CommandLineRunner。CommandLineRunner接口的Component会在spring bean初始化之后,SpringApplication run之前执行,可以控制在项目启动前初始化资源文件,比如初始化线程池,提前加载好加密证书等。</code></pre>
<h2>使用:</h2>
<pre><code>CommandLineRunner是一个接口,我们需要时,只需实现该接口就行。如果存在多个加载的数据,我们也可以使用@Order注解来排序。-1,1,2,按照最小先执行的规则Run类。</code></pre>
<p>案例:</p>
<pre><code class="language-java">@Component
@Order(-1)
public class Run implements CommandLineRunner {
@Override
public void run(String... args) throws Exception {
System.out.println("Run");
}
}</code></pre>
<pre><code class="language-java">@Component
@Order(2)
public class Run2 implements CommandLineRunner {
@Override
public void run(String... args) throws Exception {
System.out.println("Run2");
}
}</code></pre>
<pre><code class="language-java">@Component
@Order(1)
public class Run3 implements CommandLineRunner {
@Override
public void run(String... args) throws Exception {
System.out.println("Run3");
}
}</code></pre>
<pre><code class="language-java">@SpringBootApplication
public class Application {
public static void main(String[] args) {
System.out.println("----------start--------");
SpringApplication.run(Application.class,args);
System.out.println("----------end--------");
}
}</code></pre>
<p>运行效果
(输出在start和end之间,说明CommandLineRunner 的执行时机,是在所有 Spring Beans 都初始化之后,SpringApplication.run() 之前执行,Run,Run3,Run2执行的顺序也是我们@order注解的顺序了)</p>
<pre><code class="language-java">----------start--------
Run
Run3
Run2
----------end--------</code></pre>