SpringFrameworkとIoCの考え方の概要

春の紹介

  • 春-春:ソフトウェア業界に春をもたらします!
  • これは、サーバー側の開発を簡素化するテンプレートと同等のJavaアプリケーションに適しています。
  • 2002年に、Springフレームワークのプロトタイプが最初にリリースされました:interface21フレームワーク!バージョン1.0は2004年3月24日に正式にリリースされました。
  • Springの哲学:既存のテクノロジーを使いやすくすることは、それ自体が寄せ集めであり、既存のテクノロジーフレームワークを統合します。
  • 結合されたフレームの2つのセット:

SSHの組み合わせ:Struts2+Spring+Hibernate
SSMの組み合わせ:SpringMVC+Spring+MyBatis(可定制性高、SQL更灵活)

  • Spring自体の関連リンク:

春の公式サイト:

https://spring.io/projects/spring-framework#overview

春のダウンロードアドレス:

https://repo.spring.io/libs-release-local/org/springframework/spring/

GitHubアドレス(Spring自体はGitHubでホストされているオープンソースです):

https://github.com/spring-projects
  • Mavenを使用してSpringを管理するには、導入する必要のある依存関係:

Spring Web MVCの依存関係をインポートするだけで、他の必要なSrpingの依存関係をインポートするのを手伝ってくれます。

<!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc -->
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-webmvc</artifactId>
    <version>5.2.9.RELEASE</version>
</dependency>

非常に一般的に使用されるパッケージもあります。Springは最終的にMyBatisと統合されるため、JDBCの依存関係を統合するにはSpringをインポートする必要があります。

<!-- https://mvnrepository.com/artifact/org.springframework/spring-jdbc -->
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-jdbc</artifactId>
    <version>5.2.9.RELEASE</version>
</dependency>

春の利点

  • Springはオープンソースの無料フレームワーク(コンテナ)です。
  • Springは軽量(多くのリソースを消費する必要はなく、依存関係を導入するだけです)、非侵襲的なフレームワーク(Springフレームワークを導入しても元のプロジェクトは変更されませんが、開発が簡素化されます)です。
  • 制御の反転(IOC)、アスペクト指向プログラミング(AOP);
  • トランザクション処理のサポート(宣言的トランザクションのサポート)、フレームワーク統合のサポート!

【総括する】

Springは、軽量の反転制御(IOC)およびアスペクト指向プログラミング(AOP)フレームワークです。

春の構成

  • Springは7つのモジュールで構成されています。
    ここに写真の説明を挿入

率直に言って、現代のJava開発は、Spring開発に基づいています。

Springフレームワークを構成する各モジュール(またはコンポーネント)は、単独で存在することも、1つ以上の他のモジュールと組み合わせて実装することもできます。各モジュールの機能は次のとおりです。

  • 核心容器:コアコンテナは、Springフレームワークの基本機能を提供します。コアコンテナの主要コンポーネントは、ファクトリパターンの実現であるBeanFactoryです。BeanFactoryは、Inversion of Control(IOC)モデルを使用して、アプリケーションの構成と依存関係の仕様を実際のアプリケーションコードから分離します。

  • Spring 上下文:Springコンテキストは、Springフレームワークにコンテキスト情報を提供する構成ファイルです。Springコンテキストには、JNDI、EJB、電子メール、国際化、検証、スケジューリング機能などのエンタープライズサービスが含まれます。

  • Spring AOP:構成管理機能を通じて、SpringAOPモジュールはアスペクト指向のプログラミング機能をSpringフレームワークに直接統合します。したがって、SpringフレームワークにAOPをサポートするオブジェクトを簡単に管理させることができます。Spring AOPモジュールは、Springベースのアプリケーションのオブジェクトにトランザクション管理サービスを提供します。Spring AOPを使用すると、コンポーネントに依存することなく、宣言型トランザクション管理をアプリケーションに統合できます。

  • Spring DAO:JDBC DAO抽象化レイヤーは、意味のある例外階層を提供します。これを使用して、さまざまなデータベースベンダーによってスローされた例外処理とエラーメッセージを管理できます。例外階層は、エラー処理を簡素化し、書き込む必要のある例外コードの量を大幅に削減します(接続の開閉など)。Spring DAOのJDBC指向の例外は、一般的なDAO例外階層に従います。

  • Spring ORM:SpringフレームワークはいくつかのORMフレームワークを挿入するため、JDO、Hibernate、iBatis SQLMapなどのORMオブジェクトリレーショナルツールを提供します。これらはすべて、Springの一般的なトランザクションとDAOの例外階層に従います。

  • Spring Web 模块:Webコンテキストモジュールは、アプリケーションコンテキストモジュールの上に構築され、Webベースのアプリケーションにコンテキストを提供します。したがって、SpringフレームワークはJakartaStrutsとの統合をサポートします。Webモジュールは、マルチパートリクエストの処理と、リクエストパラメータのドメインオブジェクトへのバインドの作業も簡素化します。

  • Spring MVC 框架:MVCフレームワークは、Webアプリケーションを構築するためのフル機能のMVC実装です。戦略インターフェースを通じて、MVCフレームワークは高度に構成可能になります。MVCには、JSP、Velocity、Tiles、iText、POIなどの多数のビューテクノロジーが含まれています。

SpringBoot与SpringCloud

  • Spring Boot:SpringBootに基づく迅速な開発のための足場であり、単一のマイクロサービスを迅速に開発できます。その中心的なアイデアは次のとおりです“约定大于配置!”

  • スプリングブートはに焦点を当てています迅速かつ簡単な統合のための単一のマイクロサービス個人、春の雲 全体的なサービスガバナンスフレームワークに焦点を当てる

  • Spring Bootは、構成に対する制約の概念を使用します。多くの統合スキームが選択されています。構成なしでは構成できません。SpringCloudの大部分Spring Boot可以离开Spring Cloud独立使用开发项目,但是Spring Cloud 离不开Spring Bootは、依存関係あるSpringBootに基づいて実装されます。

  • SpringBoot 在 SpringClound 中起到了承上启下的作用、SpringCloudを学びたい場合は、SpringBootを学ぶ必要があります。

  • Springのデメリット:開発期間が長すぎると、元のコンセプトに違反し、構成が非常に面倒になり“配置地狱”ます。この問題は、SpringBootが登場するまで解決されませんでした。

IoC理論の導出

  • Webプロジェクトを作成したことが判明し、背景の下請けは次のとおりです。

UserDaoインターフェイス-UserDaoImpl実装クラス-UserServiceビジネスインターフェイス-UserServiceImpl実装クラス。

  • 最初に、Serviceレイヤーにdaoレイヤーオブジェクトを作成してから、daoレイヤーによって提供されるメソッドを呼び出す必要があります。このようにして、サービスレイヤーの実装クラスを外部で直接作成し、そのメソッドを呼び出すことができます。ただし、これには欠点があります。ここでdaoレイヤーを変更して1つUserDaoSqlServerImpl、UserDaoMySqlImpl、UserDaoOracleImpl的实现类変更すると、プログラマーはユーザーのニーズを満たすためにサービスレイヤーのコードを変更する必要があり、非常に面倒です。

  • getおよびsetアクセサーをサービスレイヤーのdaoレイヤーのメンバー変数に追加できます。サービスレイヤーオブジェクトが外部で作成されると、必要に応じてdaoレイヤーで使用される実装を動的に設定できます。

  • 言い換えると:

1.以前は、プログラムは積極的にオブジェクトを作成しており、コントロールはプログラマーの手に委ねられていました。
2.セットインジェクションを使用した後、プログラムはアクティブではなくなりますが、パッシブレシーバーになります
。3。このアイデアは本質的に問題を解決します。プログラマーは、オブジェクトの作成とシステムの結合を管理しなくなります。パフォーマンスが大幅に低下し、ビジネスの実現に集中できます。これはIOC思想プロトタイプです。

ここに写真の説明を挿入

IoCの本質

  • デザインとしてのコントロール自体の反転が存在しDI(依赖注入)是实现IoC的其中一种方法ます;
  • IoCのないプログラムでは、オブジェクト指向のプログラミングを使用します。オブジェクトの作成とオブジェクト間の依存関係は、プログラム内で完全にハードコーディングされています。オブジェクトの作成はプログラム自体によって制御され、オブジェクトの作成は、制御の反転後にサードパーティに転送されます。つまり获得依赖对象的方式反转了:;

たとえば、上記のプログラムでは、daoレイヤーオブジェクトを作成するコードがサービスレイヤーに記述され、サービスレイヤーによって制御されます。ただし、setメソッドが提供された後、呼び出し元は作成するdaoレイヤーオブジェクトのタイプを選択できます。これは、オブジェクトを逆にする方法です。

  • 前のプログラムでは、オブジェクトとオブジェクトの間に特定の関係があり、1つのレイヤーが1つのレイヤーを呼び出し、それらが結合されます。IoC容器これらのオブジェクトを管理するために使用し、これらのオブジェクトを接続してデカップリングを実現するサードパーティとして機能します。目的;

  • Springがオブジェクトを管理するプロセスは大まかに次のとおりです。

1. Springコンテナは、初期化時に最初に構成ファイルを読み取ります
。2。構成ファイルまたはメタデータに従ってオブジェクトを作成および整理し、コンテナに格納し
ます。3。プログラムの使用時に、Iocコンテナから必要なオブジェクトを取り出します。

  • IoCはSpringの中核であり、Spring自体はさまざまな方法を使用してIoCを完全に実装します。

BeanをXMLモードで構成する場合、Beanの定義情報は実装から分離され、2つを注釈の方法で統合できます。Beanの定義情報は、注釈の形式で実装クラスに直接定義されるため、ゼロになります。構成の目的。

【総括する】

制御の反転は、説明(XMLまたは注釈)およびサードパーティを介して特定のオブジェクトを生成または取得する方法です。Springで制御の反転を実装するのはIoCコンテナであり、その実装方法はDependency Injection(DI)です。

おすすめ

転載: blog.csdn.net/weixin_45082647/article/details/109716248