Spring Bootプロジェクトの開始時に初期化された操作をします-CommandLineRunner
多くのプロジェクト開発では、スレッドプールの初期化、Redisからデータのロードなど、プロジェクトの開始時に初期化操作を行う必要があります.
Spring Bootは、インタフェースCommandLineRunnerを実装することによって実現される方法を提供する.
CommandLineRunnerインタフェースを実現するComponentは、すべてのSpring Beansが初期化された後、SpringApplication.run()の前に実行すると、アプリケーションの起動当初にデータの初期化を行うのに非常に適しています.
実装インタフェースCommandLineRunnerのクラスの作成
Spring Bootアプリケーションは起動後、CommandLineRunnerインタフェースのインスタンスを巡回し、runメソッドを実行します.
プログラムを起動すると、コンソールから次の結果が出力されます.
コンテナを起動するときに多くのリソースを初期化し、リソースを相互に秩序化する必要がある場合、異なるCommandLineRunnerの実行順序をどのように保証しますか?Spring Bootも解決策を示した.それは
テスト:
最初の実装クラス:
2番目の実装クラス:
プログラムを起動すると、コンソールから次の結果が出力されます.
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 <<<<<<<<<<<<<