ホームページ  >  記事  >  Java  >  Springboot起動後の実行方法

Springboot起動後の実行方法

WBOY
WBOY転載
2023-06-03 11:21:39844ブラウズ

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 までご連絡ください。