ホームページ >Java >&#&チュートリアル >スプリングブート ホット デプロイメントの 2 つの方法とは何ですか?

スプリングブート ホット デプロイメントの 2 つの方法とは何ですか?

王林
王林転載
2023-06-03 11:51:27774ブラウズ

springboot と springmvc の違い

spring boot には Tomcat、Jetty、Undertow コンテナーが組み込まれており、追加のデプロイメントなしで直接実行できます。

spring boot自動的に構成され、多数の XML ファイルの構成が削減され、プロジェクト構築の複雑さが軽減されます。

Spring MVC は、サーブレットをベースとした MVC フレームワークであり、Spring の構成は主に WEB 開発の問題を解決します。非常に複雑で、さまざまな XML、JavaConfig、hin は扱いが比較的面倒です。したがって、開発者の使用を簡素化するために、Spring Boot が独創的に立ち上げられ、設定よりも規約の方が優れており、Spring の設定プロセスが簡素化されます。

Spring は「エンジン」です;

Spring MVC は Spring に基づく MVC フレームワークです;

Spring Boot は Spring4 の条件付き登録に基づく高速開発統合パッケージのセットです。

SpringBoot ホット デプロイメントの 2 つの方法

SpringBoot devtools ホット デプロイメントは SpringBoot 1.3 以降でのみ利用可能です

①: spring-boot-devtools ②: Springロード済み

方法 1:

プロジェクトの pom ファイルに依存関係を追加します:

 <!--热部署jar-->
 <dependency>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-devtools</artifactId>
 </dependency>

次に: Shift Ctrl Alt "/" (IDEA のショートカット キー) を使用して、「レジストリ」を選択します" そして、compiler.automake.allow.when.app.running

方法 2:

次のコードをプロジェクトに追加します

 <build>
 <plugins>
  <plugin>
  <!-- springBoot编译插件-->
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-maven-plugin</artifactId>
  <dependencies>
   <!-- spring热部署 -->
   <!-- 该依赖在此处下载不下来,可以放置在build标签外部下载完成后再粘贴进plugin中 -->
   <dependency>
   <groupId>org.springframework</groupId>
   <artifactId>springloaded</artifactId>
   <version>1.2.6.RELEASE</version>
   </dependency>
  </dependencies>
  </plugin>
 </plugins>
 </build>

後で mvn を使用する必要があります。追加 指示操作:

まず、IDEA で [編集構成] を見つけて、次の操作を実行します: (左上隅の「 」をクリックし、maven を選択すると、右側のパネルが表示されます。コマンドを入力します)赤い下線部分に示されているように、コマンドに名前を付けることができます (ここでは MvnSpringBootRun という名前です))

クリックして保存すると、IDEA プロジェクトの実行セクションに表示されます。緑色の矢印をクリックして実行します

springboot 設定ファイル

spring boot では、主に次の 2 種類のグローバル設定ファイルを使用します。

application.properties: 例:server. port=9998

application.yml(YAML): 例:server:

port:8080

設定ファイルの機能は主に次のとおりです。 Spring Boot の基礎となるデフォルト構成を変更します

Spring Boot のコア アノテーション

スタートアップ クラスのアノテーションは @SpringBootApplication であり、これは Spring Boot のコア アノテーションでもあります主な組み合わせには、次の 3 つのアノテーションが含まれます:

@SpringBootConfiguration: @Configuration アノテーションを組み合わせて、構成ファイルの機能を実装します。

@EnableAutoConfiguration: 自動構成機能をオンにします。また、データ ソース自動構成機能をオフにするなど、特定の自動構成オプションをオフにすることもできます: @SpringBootApplication(exclude = { DataSourceAutoConfiguration.class })。

@ComponentScan: Spring コンポーネントのスキャン。

Spring Boot のスターターの実行原理

スターターを使用して自動構成を実現するには、Maven の依存関係と構成ファイルという 2 つの条件のみが必要です。イントロダクション スターターは、自動構成のプロセスを実装します。
Maven の導入は、本質的に jar パッケージをインポートすることです。spring-boot が開始すると、スターター jar パッケージ内に resource/META-INF/spring.factories ファイルが見つかります。spring.factories ファイルの設定に従って、クラス

Spring Boot と Spring MVC の違い

  1. Spring Boot は次の統合です。 Spring と Spring MVC、Spring MVC は軽量 Web 層フレームワークである Spring の単なるモジュールです。

  2. Spring Boot はほぼゼロの構成を実現でき、すべての機能はアノテーションを使用して開発されます。プロジェクト開発を簡素化するために「設定より規約」が使用されます

  3. #難易度が高く、Spring MVC は開発のために XML 設定に依存する必要があります

  4. # #Spring Boot には組み込みの Tomcat が付属しているため、jar パッケージにパッケージ化した後、直接実行することも、外部の Tomcat を使用することも選択できます
  5. Spring Boot は多くの 3 番目の Tomcat も継承します- JDBC、Mongo、Redis などのパーティ ライブラリ設定。これらのサードパーティ ライブラリを適用すると、ほぼゼロの設定が可能です。
サービス登録とサービスの原理は何ですか? springcloud の検出

Eureka には、Eureka Server と Eureka Client という 2 つのコンポーネントが含まれています


Eureka Server は、サービス登録サービスを提供します


各ノードが接続された後、開始すると、EurekaServer に登録され、EurekaServer のサービス レジストリに利用可能なすべてのサービス ノードの情報が保存されます。情報、サービス ノード情報はインターフェイスで直観的に確認できます。

EurekaClient は、使用される Java クライアントです。 Eureka Server の対話を簡素化するため、クライアントにはポーリング (ラウンドロビン) ロード バランサー ロード アルゴリズムが組み込まれています。アプリケーションの起動後、ハートビートが Eureka Server に送信されます (デフォルトの間隔は 30 秒)。 Eureka Server が複数のハートビート サイクル内にノードのハートビートを受信しない場合、EurekaServer はサービス レジストリからサービス ノードを削除します (デフォルトでは 90 秒)


Eureka の 3 つの主要な役割 :

#Eureka Server はサービスの登録と検出を提供します
  • ##サービス プロバイダーサービス プロバイダーは独自のサービスを Eureka に登録し、サービス利用者が検索できるようにします

  • サービス コンシューマサービス コンシューマは、サービスを利用できるように、Eureka から登録されたサービス リストを取得します。

サービス登録センターとしての Eureka と Zookeeper の利点は次のとおりです。

有名な CAP 理論では、分散システムは C (一貫性) を同時に満たすことができないと指摘しています。 A (可用性) と P (パーティション トレランス)。分散システムではパーティションフォールトトレランス P を保証する必要があるため、A と C の間でトレードオフを行うしかありません。

つまり、

  • ##Zookeeper は CP を保証し、

  • Eureka は AP を保証します

mybatis## の # と $ の違いは、データに二重引用符を追加することと同等であり、$ はデータを直接表示することと同等です

    渡されたデータは文字列として扱われ、二重引用符で囲まれます。例: #user_id# で並べる、渡された値が 111 の場合、SQL に解析されるときの値は「111」で並べられます。渡された値が ID の場合、解析された SQL は「id」で並べられます。
  • $ 受信データを直接表示し、SQL で生成します。例: $user_id$ 順、渡された値が 111 の場合、SQL に解析されたときの値は user_id 順になります。渡された値が ID の場合、解析された SQL は ID 順になります。
  • 3# この方法により、SQL インジェクションを大幅に防ぐことができます。
  • #$ メソッドでは SQL インジェクションを防ぐことはできません。
  • $ メソッドは通常、テーブル名などのデータベース オブジェクトを渡すために使用されます。
  • 通常、次の場合は $ を使用しないでください。
  • MyBatis をソートするときに動的パラメーターによる順序を使用する場合は、

#文字列置換## の代わりに $ を使用することに注意する必要があります。

# デフォルトでは、#{} 形式の構文を使用すると、MyBatis は準備されたステートメントのプロパティを作成し、それに対して安全な値 (? など) を設定します。これは安全で高速であり、推奨される方法ですが、変更されていない文字列を SQL ステートメントに直接挿入したい場合もあります。たとえば、ORDER BY と同様に、次のように使用できます。

ORDER BY ${columnName}

MyBatis は、ここで文字列を変更したりエスケープしたりしません。

Redis がデータを削除する方法

volatile-lru: 有効期限が設定されたデータセットから (server.db[i].expires)削除する最も最近使用されていないデータを選択します

  1. #volatile-ttl: 有効期限が設定されたデータ セット (server.db[i].expires) から期限切れになるデータを選択します

  2. #volatile-random: 削除する有効期限が設定されたデータ セット (server.db[i].expires) からデータをランダムに選択します

  3. allkeys-lru: データ セット (server.db[i].dict) から最も最近使用されていないデータを選択して除外します。

  4. allkeys-random: から最も最近使用されていないデータを選択します。データセット (server.db[i] ].dict) が削除対象のデータをランダムに選択します

  5. #no-envivtion(eviction): データのエビクションを禁止します
  6. LRU メカニズム:

Redis は、lru カウンターの server.lrulock を保存し、定期的に更新されます (redis タイマー プログラム SeverCorn())。各 Redis オブジェクトは設定されます。対応する lru 値 オブジェクトがアクセスされるたびに、redis は redisObject.lru を更新します。

#LRU 削除メカニズム: データ セット内のいくつかのキーと値のペアをランダムに選択し、その中で最大の lru を持つキーと値のペアを削除します。したがって、redis は、削除されたデータが最も最近使用されていないことを保証しませんが、ランダムに選択されたキーと値のペアです。

TTL メカニズム:


キーと値のペアの有効期限スケジュールは、redis データ セット構造、つまり redisDb.expires に保存されます。

TTL 削除メカニズム: データ セット内のいくつかのキーと値のペアをランダムに選択し、有効期限に最も近いキーと値のペアを削除します。したがって、redis は、削除されたデータが有効期限に最も近いことを保証するのではなく、ランダムに選択されたキーと値のペアであることを保証します。 redis が各サービス クライアントでコマンドを実行すると、使用されているメモリが過剰かどうかが検出されます

以上がスプリングブート ホット デプロイメントの 2 つの方法とは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はyisu.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。