Spring Bootプロジェクトの開始時に初期化された操作をします-CommandLineRunner


多くのプロジェクト開発では、スレッドプールの初期化、Redisからデータのロードなど、プロジェクトの開始時に初期化操作を行う必要があります.
Spring Bootは、インタフェースCommandLineRunnerを実装することによって実現される方法を提供する.
CommandLineRunnerインタフェースを実現するComponentは、すべてのSpring Beansが初期化された後、SpringApplication.run()の前に実行すると、アプリケーションの起動当初にデータの初期化を行うのに非常に適しています.
実装インタフェースCommandLineRunnerのクラスの作成
package com.example.demo.config;

import org.springframework.boot.CommandLineRunner;

/**
 * @author ianly
 * @description
 * @date 2019-05-18
 */
@Component
public class StartupRunner implements CommandLineRunner {
    @Override
    public void run(String... args) throws Exception {
        System.out.println(">>>>>>>>>>>>>>>      ,         <<<<<<<<<<<<

Spring Bootアプリケーションは起動後、CommandLineRunnerインタフェースのインスタンスを巡回し、runメソッドを実行します.
プログラムを起動すると、コンソールから次の結果が出力されます.
>>>>>>>>>>>>>>>      ,         <<<<<<<<<<<<<


コンテナを起動するときに多くのリソースを初期化し、リソースを相互に秩序化する必要がある場合、異なるCommandLineRunnerの実行順序をどのように保証しますか?Spring Bootも解決策を示した.それは@Order注釈を使用することです.
テスト:
最初の実装クラス:
@Component
@Order(1)
public class StartupRunner implements CommandLineRunner {
    @Override
    public void run(String... args) throws Exception {
        System.out.println(">>>>>>>>>>>>>>>      ,     1      <<<<<<<<<<<<

2番目の実装クラス:
@Component
@Order(2)
public class StartupRunner2 implements CommandLineRunner {
    @Override
    public void run(String... args) throws Exception {
        System.out.println(">>>>>>>>>>>>>>>      ,     2      <<<<<<<<<<<<

プログラムを起動すると、コンソールから次の結果が出力されます.
>>>>>>>>>>>>>>>      ,     1      <<<<<<<<<<<<<
>>>>>>>>>>>>>>>      ,     2      <<<<<<<<<<<<<