Spring Boot のアーキテクチャは非常に一般的であるため、マスターしていないと恥ずかしくなることがあります。あなたが Java の仕事に従事していること。しかし、火は火に戻るので、注意が必要な小さな問題がいくつかあります。
これが単一のプロジェクトであり、起動速度に関する要件がない場合は、無視してください。
以下のトピックに入ります。どのような状況下では、Spring Boot プロジェクトの開始が遅くなりますか?
プロジェクトを開始するためのマシンのハードウェア構成を遅らせることはできません。プロジェクトは起動が遅く、プロジェクトはまだマシンが良くないように感じます... たとえば、ネットワーク、メモリ サイズ、CPU コアの数など。要件はそれほど高くありません。少なくとも、十分なはずです。
接続時間が長い、他のコンポーネントの起動が遅いなどのあらゆる種類の人為的要因は待機につながります...
原因 1
1 個は 0.1 秒、10 個は 1 秒、100 個は 10 秒...というように、これが最も理解しやすいです。
理由 2
まさか、使いやすくて機能が充実しているものは、必ずどこかに欠陥があるものです。
上で述べたように無駄な構成が多いのですが、ここで言いたいのは Spring Boot は単体で組み立てるものが多すぎるということです。
spring.factories ファイルが Spring Boot の関連する jar パッケージに保存されていることがわかります。内部を見ると、そのほとんどが自動アセンブリを実装する多くのクラスを記述していることがわかります。スプリングブーツの核の一つ。
しかし、注意深く見てみると、まったく使用しない可能性のあるカテゴリが実際にはたくさんあることがわかります。
しかし、何ができるでしょうか? 使用するかどうかに関係なく、少なくともチェックはしてくれます。ここは時間を過ごす場所ではないでしょうか?
理由 3
マイクロサービス プロジェクトでは、10 秒以内に開始するのが最善です。しかし、プロジェクトが十分に細分化されていないために、それができない人がほとんどです。
1 つのインターフェイスを起動するのが速いのか、10 のインターフェイスを起動するのが速いのか、あるいはそれ以上のインターフェイスを起動するのが速いのか、答えは明らかです。多くのプロジェクトは大規模で包括的です。いわゆる大規模で包括的とは、多くの機能、完全な構成、さまざまな拡張可能な構成などが存在することを意味します。包括的ではないかもしれませんが、これは何を意味しますか? 多くの構成があります。役に立つかどうかは問題ではありません。少なくとも、コンパイルしてロードする必要があるクラス ファイルはさらに多くなります。そのようなプロジェクトをすぐに開始したいとおっしゃいましたが、どうすればすぐに開始できるでしょうか?
解決策
2. Spring Boot の起動速度をオフにします。 JMX モニタリング。 spring.jmx.enabled=false
3 を設定します。JVM パラメータ -noverify を設定し、クラスを検証しません。
4. 必ずしもロードされるとは限らない Bean のロードを遅延します。スタートアップ
5. Spring Boot のグローバルな遅延読み込みを使用します
#6. AOP の側面にはアノテーションを使用しないようにしてください。これにより、起動時にすべてのメソッドがスキャンされることになります##7。一部のエンドポイント監視機能をオフにする
8. プロジェクトの不要な jar 依存関係を除外する
#9. Swagger がインターフェイスをスキャンするときに、特定のパスの下のクラスのみをスキャンするように指定します10. Feign クライアント インターフェイスのシュリンク パッケージをスキャンする スキャン範囲以上がSpringBootの起動が遅い原因は何でしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。