ホームページ  >  記事  >  Java  >  springbootプロジェクト開始後の実行方法は何ですか?

springbootプロジェクト開始後の実行方法は何ですか?

王林
王林転載
2023-05-27 23:16:461989ブラウズ

1 メソッド

  • ApplicationListenerf4b06c38ff2750052547656f66f34e34 非推奨

  • ApplicationListener 推奨

  • CommandLineRunner推奨

方法 1: Spring の ApplicationListenerf7dc647d576e8500d8af3616d55e2e81インターフェイス

ApplicationListener インターフェイスを実装し、onApplicationEvent(ContextRefreshedEvent contextRefreshedEvent) メソッドを実装します

@Service
public class SearchReceive implements  ApplicationListener<ContextRefreshedEvent> {
   @Override
   public void onApplicationEvent(ContextRefreshedEvent contextRefreshedEvent) {
       if (contextRefreshedEvent.getApplicationContext().getParent() == null) {//保证只执行一次
           //需要执行的方法
       }
   }
}

方法 2 :springboot の ApplicationRunner インターフェイス

ApplicationListener および CommandLineRunner インターフェイスは、Spring コンテナーがロードされた後に指定されたメソッドを実行するために springBoot によって提供されます。 2 つのインターフェイスの主な違いは入力パラメータです。

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

@Component
@Order(value = 1)
public class AfterRunner implements ApplicationRunner {
    @Override
    public void run(ApplicationArguments args) throws Exception {
        System.out.println("执行方法");
    }
}

方法 3: springboot の CommandLineRunner インターフェイス

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

@Component
@Order(value = 2)
public class CommandLineRunnerImpl implements CommandLineRunner {
    @Override
    public void run(String... args) throws Exception {
        System.out.println("执行方法");
    }
}

注: ApplicationListener インターフェイスと CommandLineRunner インターフェイスの両方を同時に、ApplicationRunner インターフェイスのメソッドが最初に実行され、次に CommandLineRunner;

@Slf4j
@Component
public class RunnerTest implements ApplicationRunner, CommandLineRunner {
 
  @Override
  public void run(ApplicationArguments args) throws Exception {
    System.out.println("服务启动RunnerTest   ApplicationRunner执行启动加载任务...");
  }
 
  @Override
  public void run(String... args) throws Exception {
    System.out.println("服务启动RunnerTest    CommandLineRunner 执行启动加载任务...");
    }
  }
}

2 実行順序を指定します

ApplicationRunner インターフェイスと CommondLineRunner インターフェイスの両方がプロジェクトに実装されている場合、 Order アノテーションを使用するか、Ordered インターフェイスを実装することができます。実行順序を指定します。値が小さいほど最初に実行されます。

3 原則

SpringApplication の run メソッドは afterRefresh メソッドを実行します。

afterRefresh メソッドは callRunners メソッドを実行します。

callRunners メソッドは、ApplicationRunner インターフェイスと CommondLineRunner インターフェイスを実装するすべてのメソッドを呼び出します。

以上がspringbootプロジェクト開始後の実行方法は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はyisu.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。