プログラミングアーキテクチャ(08):Spring.Mvc.Bootフレームワーク

この記事のソースコード:GitHub・ここをクリック|| GitEE・ここをクリック

1つはSpringフレームワーク

1.フレームワークの概要

Springはオープンソースフレームワークです。フレームワークの主な利点の1つは、その階層化アーキテクチャです。階層化アーキテクチャにより、ユーザーはJ2EEアプリケーション開発用の統合フレームワークを提供しながら、使用するコンポーネントを選択できます。Springは、基本的なJavaBeansを使用して、以前はEJBでしか実行できなかったことを実行します。Springは、階層化された軽量のオープンソースフレームワークです。

基本機能:階層化アーキテクチャ、高凝集度と低結合、AOPプログラミングのサポート、トランザクション管理、統合テスト、さまざまなフレームワークの統合。

2.コアコンポーネント

コアコンテナ:Beanの作成、構成、管理、およびその他の機能が含まれています。

AOPアスペクトプログラミング:アプリケーションの分離に役立ちます。

データアクセス:統合されたJDBC、一般的に使用されるDaoレイヤーフレームワークの休止状態、mybatisなど。

Webプログラミング:インターフェイスロジックとアプリケーションの分離を実現するための統合プロセスのMVCフレームワーク。

3.Beanオブジェクトの理解

Springコンテナーは、Beanオブジェクトと呼ばれる、ライ​​フサイクル全体にわたるオブジェクトの作成、アセンブル、設定、および管理を担当します。

アセンブリ方法:XML形式、注釈スキャン、Javaコードアセンブリ。

スコープ:シングルトンBeanやプロトタイプBeanなど、Springによって作成されたBeanインスタンスの数を決定するために使用されます。シングルトンデフォルトシングルトン、プロトタイプ複数インスタンス、リクエストリクエスト、セッションセッションレベル、グローバルセッション。

ライフサイクル:インスタンス化、属性の読み込み、初期化前後の管理、および破棄。

4.一般的に使用されるコアアノテーション

コントローラー:@Mapping関連のソリューション(@ GetMapping、@ PostMapping、@ PutMapping、@ DeleteMapping)に基づいて、クラスをハンドラーとしてマークし、リクエストとControllerメソッドの間のマッピング関係を関連付けて、リクエストによってコントローラーにアクセスできるようにします。

RequestMapping:クラスまたはメソッドに適用できるリクエストアドレスマッピングのアノテーションを処理します。クラスで使用されるということは、要求に応答するクラス内のすべてのメソッドが、クラスでマークされたアドレスを親パスとして使用することを意味します。

リソース:ByNameに従って自動的に挿入します。パッケージjavax.annotation.Resourceをインポートする必要があります。@Resourceには2つの重要な属性があります。nameとtypeです。Springは@Resourceアノテーションが付けられたname属性をBeanの名前として解析し、type属性はBeanのタイプとして解析します。

サービス:特定の構成ファイルのBean管理を置き換えることができます。定義されたBeanはデフォルトでシングルトンであり、デフォルト名はクラス名であり、最初の文字は小文字です。

5.IOCとDIのアイデア

IOCコンテナ

Javaシステムのオブジェクト結合関係は非常に複雑です。システムのさまざまなモジュール間の依存関係と、マイクロサービスモジュール間の相互呼び出し要求はすべてこの真実です。マイクロサービスのシステムモジュール、オブジェクト、およびサービス間の結合度を下げることは、ソフトウェアエンジニアリングの中心的な問題の1つです。Springフレームワークの中心的なアイデアはIOC制御の反転であるため、これはオブジェクト間のデカップリングを実現するために使用されます。

依存性注入

オブジェクト間の関係を直接確立するIOCのアクションは、DI依存性注入と呼ばれます。依存性:オブジェクトAはオブジェクトBの機能を使用する必要があるため、オブジェクトAはオブジェクトBと呼ばれます。インジェクション:オブジェクトAのオブジェクトBをインスタンス化して、オブジェクトBの機能を使用します。このアクションはインジェクションと呼ばれます。

6.Aopアスペクトプログラミング

事前コンパイルと実行時の動的エージェントにより、プログラム機能の統合保守を実現する技術。コアの役割:ビジネスロジックのさまざまな部分を分離できるため、ビジネスロジックのさまざまな部分間の結合が減り、プログラムの再利用性と開発効率が向上します。AOPは、継承と委任に代わる新しいソリューションを提供し、より簡潔で明確に使用できます。これは、ソフトウェア開発のホットな概念です。

実装方法:JDK動的プロキシ、CgLibバイトコード拡張、Spring半自動プロキシ、Spring自動プロキシ。

7.トランザクション管理

トランザクションとは、単一の論理作業単位として実行される一連の操作(SQLステートメント)を指します。これらの操作はすべて成功するか、すべて失敗します。Springトランザクション管理の本質は、データベースがトランザクションに対してサポートする操作をカプセル化することです。JDBCトランザクション管理メカニズムを使用することは、java.sql.Connectionオブジェクトを使用して、トランザクションのコミットとロールバックを完了することです。

コアAPIパッケージ

PlatformTransactionManager:プラットフォームトランザクションマネージャー、Springはトランザクションを管理します。トランザクションマネージャーを使用してトランザクション構成を実行する必要がある場合、コアメソッド:トランザクションの取得、トランザクションのコミット、およびトランザクションのロールバック。

TransactionDefinition:このオブジェクトは、分離レベル、読み取り専用、タイムアウトなどのトランザクションの詳細(トランザクション定義、トランザクション属性)をカプセル化します。

TransactionStatus:現在のトランザクションステータスを記録するために使用されます。例:セーブポイントがあるかどうか、トランザクションが完了したかどうか。スプリング最下層は、状態に応じて対応する操作を実行します。

8.構成ファイル

Spring構成ファイルでは、通常、次のコアコンテンツが構成されます。

  • JDBCパラメーターなどの外部構成ファイルを読み取ります。
  • Druid、C3P0などのデータベース接続プールを構成します。
  • SSMやSSH統合などの統合環境構成。
  • トランザクションを管理するための制御方法。
  • メール、タスク、MQなどの一般的なコンポーネントを統合します。

実際の開発では、複雑なプロジェクト構成は非常に複雑で管理が困難です。プロジェクト内のさまざまな環境に数十の構成ファイルが含まれている場合があり、これらは統一された契約を使用してSpringBootフレームワークで簡略化されます。

9.環境はSSMとSSHを統合します

Springフレームワークは、Mybatis、Mvc、Hibernate、Redis、およびその他の一連のコンポーネントの共通統合などの強力な統合機能を集約し、開発環境の統合に非常に便利です。全体的な責任は、いくつかの層に分けられます。制御層、ビジネスロジックレイヤー、データ永続性レイヤー、ドメインモジュールレイヤー、ミドルウェアレイヤーは、開発者が明確な構造、優れた再利用性、および簡単なメンテナンスを備えたWebアプリケーションを短時間で構築するのに役立ちます。

10.デザインパターン

シングルトンモード:SpringフレームワークでのBeanオブジェクトの管理は、デフォルトではシングルトンであり、複数のインスタンスとして明示的に識別することもできます。

ファクトリモード:対応するファクトリを介してクラスオブジェクトを生成します。この設計メソッドは、「オープンアンドクローズ」の原則に準拠しています。SpringフレームワークでのBeanFactoryとBeanの使用法。

アダプターモード:SpringMvc実行制御では、フロントコントローラーDispatcherServletがプロセッサーアダプターを呼び出してハンドラーを実行し、プロセッサーアダプターがハンドラーを実行してModelAndViewをアダプターに返します。

責任チェーンモード:DispatcherServletコアメソッドdoDispatch。HandlerExecutionChainは、HandlerInterceptorのコレクションを維持するだけで、対応するインターセプターを登録できます。リクエスト自体を直接処理するのではなく、リクエストは実行のために責任チェーンの登録済みプロセッサーに割り当てられ、責任チェーン自体の間の結合の程度を減らします。と処理ロジック。

2、SpringMvcモード

1.MVCモデルの概念

SpringMVCは、Javaで実装されたMVCデザインパターンに基づくリクエスト駆動型の軽量Webフレームワークです.SpringFramework Family Bucketに由来し、Spring Frameworkとシームレスに統合され、MVCアーキテクチャパターンのアイデアを使用し、Webレイヤーを分離します責任。。構造が緩く、SpringMVCではほぼすべての種類のビューを使用でき、各モジュールが分離されており、結合が非常に低く、拡張が容易です。Springとのシームレスな統合、シンプル、柔軟性、そして使いやすさ。

2.実行プロセス

フロントコントローラーDispatcherServletへのリクエストを開始します。フロントコントローラーはHandlerMappingに検索をリクエストし、ハンドラーはxml構成とアノテーションに従って検索できます。

プロセッサマッパーHandlerMappingはハンドラーをフロントコントローラーに返します。フロントコントローラーはプロセッサーアダプターを呼び出してハンドラーを実行します。プロセッサーアダプターはハンドラーを実行します。

ハンドラーの実行が完了し、ModelAndViewがアダプターに返されます。プロセッサーアダプターがModelAndViewをフロントコントローラーに返します。ModelAndViewは、Modelとビューを含むspringmvcフレームワークの低レベルオブジェクトです。

フロントコントローラーはビューリゾルバーにビューを解決するように要求し、論理ビュー名に従って実際のビューに解決します。ビューリゾルバーはビューをフロントコントローラーに返します。フロントコントローラーはビューレンダリングを実行し、ビューレンダリングはモデルデータ(ModelAndViewオブジェクト内)リクエストフィールドに入力します。フロントコントローラーはユーザーに結果を応答します。

3.コアコンポーネント

フロントコントローラー:リクエストがブラウザーを離れた後、最初に到着するのは、プロセス制御全体の中心であるDispatcherServletです。

プロセッサマッパー:要求されたURLに従って指定されたインターフェイスにルーティングし、ユーザーはハンドラープロセッサを見つけるように要求します。

プロセッサアダプタ:ハンドラは特定のルールに従って実行され、複数のプロセッサをサポートし、各プロセッサの処理方法は異なります。

プロセッサ:特定のビジネスロジックを含むユーザー要求の処理は、ビジネス要件に従って開発する必要があります。

ビューリゾルバー:要求の応答結果からビューを生成し、特定のページアドレスである論理ビュー名に従って物理ビュー名に解決します。

ビュー:Mvcフレームワークは、jsp、freemarker、pdfなどを含む多くのタイプのビュービューのサポートを提供します。

4.パラメータ処理

requestParam:主にSpringMvcフレームワークのコントロールレイヤーでパラメーターを取得するために使用されます。3つの一般的に使用されるパラメーター:defaultValueはデフォルト値を設定することを意味し、ブール値を介して渡す必要があるパラメーターであるかどうかを設定するために必要です。渡されたパラメーターの名前。

RequestBody:リクエスト本文でバックエンドに渡されたJson文字列データを受信する場合、GETメソッドにリクエスト本文がないため、@ RequestBodyを使用してデータを受信する場合、GETメソッドを使用してデータを送信することはできません。 POSTメソッドを使用して送信します。

ResponseBody:このアノテーションはメソッドの戻りオブジェクトに使用されます。データ応答形式を指定するようにコンバーターを構成できます。Jsonなどの[表示]ページの代わりにデータ形式を指定するときに返されたデータを使用する場合、Xmlなど。

5.Springフレームワークを統合します

  • スキャンインターフェイスファイルを構成します。
  • MVCのデフォルトのアノテーションマッピングメソッドを開始します。
  • ビューリゾルバーを構成します。
  • Web.xml構成はSpring-Mvcファイルをロードします。

6.WebFluxを比較します

リアクティブプログラミングは、データフローと変更転送に基づく宣言型プログラミングパラダイムです。WebFluxは、Webコントロール側のリアクティブプログラミングのコンポーネントです。Springの公式Webサイトで説明されています。SpringMvcに代わるものではなく、より多くのソリューションを提供することを目的としています。シーンの。

3、SpringBootフレームワーク

1.一般的な基本機能

  • 環境構築と注釈開始メカニズム、ログ印刷。
  • グローバル例外処理、タイミングタスクおよび非同期タスクの使用。
  • インターセプター構成、AOPアスペクトプログラミング、ファイル管理。
  • JWT、Shiro、Securityなどの一般的なセキュリティコンポーネントを統合します。
  • 統合されたアクチュエータ監視コンポーネント、システムパッケージ操作。

2.データソースを統合する

  • JdbcTemplate、JPA、複数のデータソース構成を統合します。
  • DruidとC3P0の共通接続プールを統合します。
  • Mybatisフレームワーク、統合されたページング管理を統合します。

3.一般的なミドルウェアを統合する

  • 統合Redisキャッシュ、キャッシュ注釈モード。
  • ElasticSearchフレームワークを統合して、高性能の検索エンジンを実現します
  • Swagger2に基づいて、インターフェイス管理インターフェイスを構築します。

SpringBootフレームワーク全体は、Springフレームワークの多くの規則と仕様に基づいています。基本的な原則は変更されていません。さまざまな使用法に精通しており、より多くのことを理解できます。

4、比較分析

Springフレームワークは、Springオープンソースエコロジーに比べて最低レベルの実装原則です。SpringMvcはそれに基づいており、主にWebコントロールレイヤーの開発を簡素化します。たとえば、以前のStrutsとサーブレットは徐々に置き換えられます。

Spring + Mvcに基づいて、SpringBootは非常に強力な契約構成を実装し、契約を複雑な環境に統合し、開発と構成を簡素化し、ビジネス開発は同じままです。SSM環境では、プロジェクト構成の開始とデバッグに関係なく、 、非常に複雑です。、SpringBootレベルに達した後も継続的に簡略化されているため、SpringBootの学習は、合意された構成仕様を理解すれば基本的に使いやすいです。

5、ソースコードアドレス

GitHub·地址
https://github.com/cicadasmile
GitEE·地址
https://gitee.com/cicadasmile

推奨読書:プログラミングシステムの仕上げ

シリアルナンバー プロジェクト名 GitHubアドレス GitEEアドレス 推奨
01 Javaは、デザインパターン、アルゴリズム、およびデータ構造を記述します GitHub・ここをクリック GitEE・ここをクリック ☆☆☆☆☆
02 Javaの基礎、並行性、オブジェクト指向、Web開発 GitHub・ここをクリック GitEE・ここをクリック ☆☆☆☆
03 SpringCloudマイクロサービスの基本コンポーネントケースの詳細な説明 GitHub・ここをクリック GitEE・ここをクリック ☆☆☆
04 SpringCloudマイクロサービスアーキテクチャの実際の戦闘の包括的なケース GitHub・ここをクリック GitEE・ここをクリック ☆☆☆☆☆
05 SpringBootフレームワークの基本的なアプリケーションから高度なものまで GitHub・ここをクリック GitEE・ここをクリック ☆☆☆☆
06 SpringBootフレームワークは、一般的なミドルウェアを統合および開発します GitHub・ここをクリック GitEE・ここをクリック ☆☆☆☆☆
07 データ管理、配布、アーキテクチャ設計の基本的なケース GitHub・ここをクリック GitEE・ここをクリック ☆☆☆☆☆
08 ビッグデータシリーズ、ストレージ、コンポーネント、コンピューティング、その他のフレームワーク GitHub・ここをクリック GitEE・ここをクリック ☆☆☆☆☆

おすすめ

転載: blog.csdn.net/cicada_smile/article/details/109093878