Java SprigbookのSpring家族の技術体系


一、Why
Spring Bootは、従来のSpringフレームワークに基づいて、革新と最適化を行い、開発者を従来の煩雑な配置から解放し、プラグアンドプレイの集積化コンポーネントを大量に提供し、様々なコンポーネント間の複雑な統合プロセスを解決し、開発効率を大幅に高め、メンテナンスコストを低減しました。
例えば、元々はSpring MVCのフレームワークを使用していますが、全体の開発過程で、構成ファイルをたくさん作成し、各階層に対して専門的な開発コンポーネントを導入する以外に、アプリケーションサーバを独立して配置し管理する必要があります。最後に、システムの運転状態を効果的に監視するためには、あまり良くない外部フレームを導入する必要があります。
Spring Bootフレームを使用しています。構成、プログラミング、配置、監視を直接解決していますので、使いやすく、簡単で効率的です。
ますます強くなるSpring Bootは、Java EE分野の標準的な開発の枠組みのようです。Spring Bootの各技術コンポーネントを熟練に把握し、その内部運行メカニズムをある程度把握することができ、Javaアプリケーション開発の基本的な要求であり、Spring Cloudなどのマイクロサービス開発の枠組みを学ぶ基礎でもあります。
二、Spring家族技術生態パノラマ図
Springフレームは2003年にRod John sonによって設計され、実現されて以来、いくつかの重要なバージョンの発展と進化を経て、巨大な家族技術の生態圏を形成してきました。現在、SpringはJava EE分野で最も人気のある開発フレームであり、世界の大手企業の中で広く使われています。
まずSpring家族の技術生態のパノラマを見てみましょう。
Springの公式サイトにアクセスするhttps://spring.io/
在这里插入图片描述
図からは、Springフレームワークの7つのコア技術体系がここに羅列されており、それぞれマイクロサービスアーキテクチャ、応答式プログラミング、クラウド原生、Webアプリケーション、Serverlessアーキテクチャ、イベント駆動、バッチ処理であることが分かる。
これらの技術体系は独立していても、一定の交差点があり、例えば、マイクロサービスアーキテクチャは、しばしばSpring Cloudに基づくクラウド原生技術と結合して使用されるが、マイクロサービスアーキテクチャの構築プロセスは、RESTfulスタイルを提供することができるWebアプリケーションなどに依存する必要がある。
一方、特定の技術的特徴を備えているほか、これらの技術体系にもそれぞれの応用シーンがある。
例をあげる
  • 日常報などの軽量級のバッチ処理タスクを実現したいならば、Hadoopという巨大なオフライン処理プラットフォームを導入したくない場合、Spring Batchに基づくバッチ処理フレームを使うのはいい選択です。
  • は、Kafka、RabbiitMQなどの様々な主流メッセージの中間デバイスとの間の統合を実現するために、これらの中間デバイスの使用上の違いを遮断するために、Spring Cloud Streamに基づくイベント駆動アーキテクチャを使用して、外部に統一APIを提供し、内部の各中間デバイスの実装上の差異を遮断する。
  • 日常開発において、単一ブロックのWebサービスを構築すれば、Spring Bootを採用することができる。マイクロサービスアーキテクチャを開発するには、Spring BootベースのSpring Cloudが必要であり、Spring Cloudは、Spring Cloud Streamに基づくイベント駆動アーキテクチャを内蔵している。
    また、特に強調されているのは応答式プログラミング技術である。応答プログラミングはSpring 5によって導入された最大の革新であり、システムアーキテクチャ設計と実現の技術方向を表している。そこで、Spring Boot、Spring Cloud、Spring応答式プログラミングの3つの技術体系からも切り込みを行います。Springが具体的に開発過程でどのような問題を解決できるかを見てください。
    三、Spring Frame eworkの全体構造
    もちろん、今見られているスピリッグ家族の技術体系はすべてスピリット・フレームワークに基づいて発展してきました。上記の技術体系を紹介する前に、Spring Fraamewarkの全体構造を簡単に理解してみます。
    【4.x】
    在这里插入图片描述
    四、Spring BootとWebアプリケーション
    Spring BootはSpring Framewarkをベースに構築され、次世代のWebアプリケーション開発の枠組みである。
    この図を通してSpring Bootの全貌を知ることができます。
    在这里插入图片描述
    Springの公式サイトを見ると、Spring BootはすでにSpringの中でトップクラスのサブプロジェクトになっています。2014年4月に1.0.0バージョンがリリースされて以来、Spring BootはJava EE分野でWebアプリケーションを開発するための第一の枠組みとして発展しました。
    まず、Spring Bootを使ってRESTfulスタイルを開発するHTTPの端点を感じてみたいです。
    
    @SpringBootApplication
    
    @RestController
    
    public class DemoApplication {
     
        @GetMapping("/helloworld")
    
    	public String hello() { 
    
    	    return "Hello World!";
    
    	}
    
     
    
    	public static void main(String[] args) {
    
            SpringApplication.run(DemoApplication.class, args);
    
        }
    
    }
    
    古典的な「Hello World」プログラムであり、RESTfulスタイルをサポートするWebアプリケーションをSpring Bootで構築するには数秒しかかかりません。
    Spring Bootアプリケーションを作成したら、上記のようなDemoAppleクラスを追加して、Spring Boot内蔵のWebサーバを起動して8080ポートを傍受できます。残りのすべての作業はSpring Bootが自動的に完了しました。
    五、運行期間内に埋め込まれた容器(伝統的なWeb容器と非閉塞式容器)をサポートする。
    Spring Bootは、従来のSpringフレームにはない機能特性を備えており、運行期間内に埋め込まれたコンテナ(Tomcat、JettyなどServlet仕様をサポートする複数の伝統的なWebコンテナを含む)をサポートしています。
    最新のSpring Boot 2.Xバージョンでは、Nettyおよび統合Servlet 3.1+の非ブロッキング容器へのサポートも提供されています。運行期間に基づいてコンテナを埋め込む仕組み。
    開発者がWebサービスを起動するには、1行のjava Cjarコマンドを使えばいいです。
    在这里插入图片描述
    六、自動配置
    また、Spring Bootの核心機能は自動配置であることを発見しました。
    Spring Bootは以前Spring MVCを使ったようにHTTP要求とレスポンスに関するXMLのセットを指定する必要がありませんでした。
    実際、Spring Bootの運行過程はやはりSpring MVCに依存していますが、もともと開発者が指定していた各種の配置項目をデフォルト値に設定し、運行時の環境に内蔵しています。例えば、デフォルトのサーバポートは8080です。これらの構成項目に対して一定化の必要がないなら、何の処理もしなくてもいいです。既定の開発約束を採用すればいいです。これはSpring Bootが提唱する約束が配置より優れているということです。
    在这里插入图片描述
    七、内蔵の監視メカニズム
    また、従来のSpringフレームに比べて、Spring Bootの大きなハイライトは内蔵監視機構を導入しており、これはActutorコンポーネント(メモリ情報、JVM情報、ゴミ回収情報などを含む一般的なもの)によって実現されている。Actutorコンポーネントに基づいて、自動構成を含むアプリケーションの詳細情報を確認することができますが、アプリケーションの実行時の健康状態をリアルタイムで監視することができます。
    在这里插入图片描述
    Spring Bootの上述の機能は、実際には複数の次元からウェブアプリケーションのスイッチングプロセスを簡略化しており、これらの次元は符号化、構成、配置、監視などを含むことがわかる。
    八、Spring Cloud(Netflix)とマイクロサービスアーキテクチャ
    Spring CloudはSpring Bootに基づいて構築され、その全体構成図は以下の通りである。
    在这里插入图片描述
    技術コンポーネントの完全性はSpring Cloudフレームワークの主要な利点であり、業界で多くの有名なマイクロサービス開発コンポーネントが集積されている。Spring Cloudのコアコンポーネントを下図に示します。
    在这里插入图片描述
    Spring Bootの開発の利便性に基づいて、Spring Cloudはマイクロサービスシステムインフラの開発過程を巧みに簡略化し、Spring Cloudは上の図に示すサービス発見登録、APIゲートウェイ、配置センター、メッセージバス、負荷バランス、ヒューズ、データ監視などを含むことが見られます。
    九、Spring 5とレスポンスプログラム
    Spring 5の正式発表に伴い、応答プログラミングの新たな発展時期を迎えました。Spring 5には、データ管理に関する応答式データアクセス、システム統合に関する応答式メッセージ通信、Webサービスに関する応答式Webフレームなどの複数の応答式コンポーネントが埋め込まれており、応答式アプリケーションの開発プロセスと開発の難しさが大きく簡略化されている。
    図は、応答式プログラミングの技術スタックと従来のServlet技術スタックとの比較を示している。
    在这里插入图片描述
    上の図から見ても分かるように、上の図の左側はSpring WebFluxに基づく技術スタックで、右側はSpring MVCに基づく技術スタックである。伝統的なSpring MVCはJava EEのServlet基準の上に構築されていることを知っています。この規格自体は閉塞式と同期式であり、Spring WebFluuxは応答式フローに基づいているので、非同期的なサービスを構築するために使用できます。
    Spring 5では、Project Reactorを応答流の実現ライブラリとして選択した。レスポンスプログラミングの特性上、Spring WebFluxやProject Reactorの動作は、NettyやUndertowなどの非同期機構をサポートするコンテナに依存する必要があります。同時に、非同期I/OのServlet 3.1をサポートするため、新しいバージョンのTomcatとJettyを実行環境として選択することもできます。
    Spring MVCとSpring WebFluxとの違いと連絡をより鮮明に示した図である。
    在这里插入图片描述
    Spring Boot及びSpring Cloudに基づくアプリケーションでは、Spring WebFluxとSpring MVCを混合して使用することができます。
    十、結び
    私たちは主にSpring Bootの枠組みをめぐって討論を展開し、それぞれ構成体系、データアクセス、Webサービス、メッセージ通信、システム安全、システム監視、アプリケーションテストなどの次元からこのフレームを深く分析し、採用したバージョンは2.2.X版である。
    Spring家族の技術生態を分析し、Spring Boot、Spring Cloud、Spring応答式プログラミングの三つの技術体系を重点的に紹介しました。技術発展の過程と趨勢から言えば、これらのツールと枠組みの出現は必然性がある。Spring Bootは伝統的なSpring MVCの改善で、Spring CloudはSpring Bootに基づいてマイクロサービスアーキテクチャを構築し、応答式プログラミングは未来技術の発展方向を表します。
    以上でJava SprigbootのSpring家族の技術体系に関する記事を紹介します。Spring家族に関する技術体系の内容は以前の文章を検索したり、次の関連記事を見たりしてください。これからもよろしくお願いします。