Springboot起動後の実行方法

WBOY
リリース: 2023-06-03 11:21:39
転載
908 人が閲覧しました

1. アノテーション @PostConstruct

アノテーション @PostConstruct を使用するのが最も一般的な方法ですが、問題は、メソッドの実行に時間がかかりすぎると、プロジェクトが実行中にサービスを提供できなくなることです。その方法。

@Component
public class StartInit {
//
//    @Autowired   可以注入bean
//    ISysUserService userService;

    @PostConstruct
    public void init() throws InterruptedException {
        Thread.sleep(10*1000);//这里如果方法执行过长会导致项目一直无法提供服务
        System.out.println(123456);
    }
}
ログイン後にコピー

2. CommandLineRunner インターフェイス

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));
    }
}
ログイン後にコピー

3. ApplicationRunner インターフェイスの実装

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());
        }
    }
}
ログイン後にコピー

4 である必要があります。 ApplicationListener を実装する

インターフェイス ApplicationListener メソッドを実装し、ApplicationRunner および CommandLineRunner インターフェイスを実装しても、サービスには影響せず、サービスを正常に提供できます。監視対象のイベント (通常は ApplicationStartedEvent または ApplicationReadyEvent) に注意してください。他のイベントは、豆。

@Component
public class ApplicationListenerImpl implements ApplicationListener<ApplicationStartedEvent> {
    @Override
    public void onApplicationEvent(ApplicationStartedEvent event) {
        System.out.println("listener");
    }
}
ログイン後にコピー

5. 4 つのメソッドの実行順序

アノテーション メソッド @PostConstruct は常に最初に実行されます

ApplicationStartedEvent イベントが監視されている場合、それは確実にイベントの前に実行されます。 CommandLineRunner と ApplicationRunner を実装します。

ApplicationReadyEvent イベントをリッスンしている場合、このイベントは CommandLineRunner と ApplicationRunner の後に確実に実行されます。

CommandLineRunner と ApplicationRunner は、デフォルトでは ApplicationRunner が最初に実行されます。両方が @Order を指定した場合、@Order のサイズ順に実行され、大きい方が最初に実行されます。

以上がSpringboot起動後の実行方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:yisu.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!