アノテーション @PostConstruct を使用するのが最も一般的な方法ですが、問題は、メソッドの実行に時間がかかりすぎると、プロジェクトが実行中にサービスを提供できなくなることです。その方法。
@Component public class StartInit { // // @Autowired 可以注入bean // ISysUserService userService; @PostConstruct public void init() throws InterruptedException { Thread.sleep(10*1000);//这里如果方法执行过长会导致项目一直无法提供服务 System.out.println(123456); } }
CommandLineRunner インターフェイスを実装し、run メソッドで呼び出す必要があるメソッドを呼び出します。利点は、メソッドの実行時にプロジェクトが完了していることです。初期化されており、正常にサービスが提供可能です。
同時に、このメソッドはパラメータを受け入れることもでき、プロジェクトの開始時に渡されたパラメータに基づいていくつかの処理を実行できます: java -jarデモ.jar arg1 arg2 arg3。
@Component public class CommandLineRunnerImpl implements CommandLineRunner { @Override public void run(String... args) throws Exception { System.out.println(Arrays.toString(args)); } }
ApplicationRunner と CommandLineRunner の実装方法は基本的に似ています。
唯一の違いは、起動時に渡されるパラメータの形式です。CommandLineRunner には、パラメータの形式に制限はありません。ApplicationRunner インターフェイスのパラメータの形式は、–key=value
@Component public class ApplicationRunnerImpl implements ApplicationRunner { @Override public void run(ApplicationArguments args) throws Exception { Set<String> optionNames = args.getOptionNames(); for (String optionName : optionNames) { List<String> values = args.getOptionValues(optionName); System.out.println(values.toString()); } } }
インターフェイス ApplicationListener メソッドを実装し、ApplicationRunner および CommandLineRunner インターフェイスを実装しても、サービスには影響せず、サービスを正常に提供できます。監視対象のイベント (通常は ApplicationStartedEvent または ApplicationReadyEvent) に注意してください。他のイベントは、豆。
@Component public class ApplicationListenerImpl implements ApplicationListener<ApplicationStartedEvent> { @Override public void onApplicationEvent(ApplicationStartedEvent event) { System.out.println("listener"); } }
アノテーション メソッド @PostConstruct は常に最初に実行されます
ApplicationStartedEvent イベントが監視されている場合、それは確実にイベントの前に実行されます。 CommandLineRunner と ApplicationRunner を実装します。
ApplicationReadyEvent イベントをリッスンしている場合、このイベントは CommandLineRunner と ApplicationRunner の後に確実に実行されます。
CommandLineRunner と ApplicationRunner は、デフォルトでは ApplicationRunner が最初に実行されます。両方が @Order を指定した場合、@Order のサイズ順に実行され、大きい方が最初に実行されます。
以上がSpringboot起動後の実行方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。