ApplicationListener< ContextRefreshedEvent> 非推奨
ApplicationListener 推奨
CommandLineRunner推奨
ApplicationListener インターフェイスを実装し、onApplicationEvent(ContextRefreshedEvent contextRefreshedEvent) メソッドを実装します
@Service public class SearchReceive implements ApplicationListener<ContextRefreshedEvent> { @Override public void onApplicationEvent(ContextRefreshedEvent contextRefreshedEvent) { if (contextRefreshedEvent.getApplicationContext().getParent() == null) {//保证只执行一次 //需要执行的方法 } } }
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("执行方法"); } }
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 执行启动加载任务..."); } } }
ApplicationRunner インターフェイスと CommondLineRunner インターフェイスの両方がプロジェクトに実装されている場合、 Order アノテーションを使用するか、Ordered インターフェイスを実装することができます。実行順序を指定します。値が小さいほど最初に実行されます。
SpringApplication の run メソッドは afterRefresh メソッドを実行します。
afterRefresh メソッドは callRunners メソッドを実行します。
callRunners メソッドは、ApplicationRunner インターフェイスと CommondLineRunner インターフェイスを実装するすべてのメソッドを呼び出します。
以上がspringbootプロジェクト開始後の実行方法は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。