【SpringBoot】起動後にメソッドを実行する5つの方法

SpringBoot プロジェクトが開始された後、メソッドを実行するには 5 つの方法があります。

1. CommandLineRunner インターフェイスを実装する

プロジェクトが初期化されると、メソッドが呼び出され、サービスが提供されます。

@Component
public class StartInit2 implements CommandLineRunner {
    
    

    @Override
    public void run(String... args) throws Exception {
    
    
        System.out.println("CommandLineRunner====================");
    }
}

2. ApplicationRunner インターフェイスを実装する

CommandLineRunnerと同じです。パラメータの受け渡し形式のみが異なります。CommandLineRunner: 制限なし、ApplicationRunner: キーと値

@Component
public class StartInit3 implements ApplicationRunner {
    
    

    @Override
    public void run(ApplicationArguments args) {
    
    
        System.out.println("ApplicationRunner=================");
    }
}

3. ApplicationListener インターフェースを実装する

プロジェクトが初期化されると、メソッドが呼び出され、サービスが提供されます。監視対象のイベント (通常は ApplicationStartedEvent または ApplicationReadyEvent) に注意してください。他のイベントは Bean に挿入されない場合があります。

@Component
public class StartInit4 implements ApplicationListener<ApplicationStartedEvent> {
    
    

    @Override
    public void onApplicationEvent(ApplicationStartedEvent event) {
    
    
        System.out.println("ApplicationListener================ApplicationStartedEvent");
    }
}
  • イベントがリッスンされる場合ApplicationStartedEvent、ApplicationListener は間違いなく CommandLineRunner および ApplicationRunner の前に実行されます。
  • イベントがリッスンされる場合ApplicationReadyEvent、ApplicationListener は CommandLineRunner と ApplicationRunner の後に必ず実行されます。

順序:
デフォルトでは、ApplicationRunner最初に実行されます。両方の当事者が を指定した場合@Order@Order実行はサイズ順に行われ、小さいものが最初に実行されます。

原理:

  1. SpringApplicationのrunメソッドはafterRefreshメソッドを実行します。
  2. afterRefresh メソッドは callRunners メソッドを実行します。
  3. callRunners メソッドは、ApplicationRunner インターフェイスと CommondLineRunner インターフェイスを実装するすべてのメソッドを呼び出します。callRunners メソッドは、ApplicationRunner インターフェイスと CommondLineRunner インターフェイスを実装するすべてのメソッドを呼び出します。

4. @PostConstruct アノテーション

このメソッドはプロジェクトの初期化中に呼び出されます。ビジネス ロジックの実行に時間がかかると、プロジェクトの起動に失敗する可能性があります。

@Component
public class StartInit {
    
    

    @PostConstruct
    public void init() {
    
    
        System.out.println("@PostConstruct===============================");
    }

}

5. InitializingBean インターフェースを実装する

このメソッドはプロジェクトの開始時に呼び出されます

@Component
public class StartInit6 implements InitializingBean {
    
    

    @Override
    public void afterPropertiesSet() {
    
    
        System.out.println("InitializingBean====================");
    }

}

おすすめ

転載: blog.csdn.net/sco5282/article/details/126365408