70.SpringのIoC制御の反転

IOC(制御の反転):制御の反転は理論であり、指針となるイデオロギーです。オブジェクトの使用方法とオブジェクトの管理方法を開発者に指示します。オブジェクトの作成、プロパティの割り当て、およびオブジェクトの宣言サイクルはすべて、コード外のコンテナーによって管理されます。

コンテンツ

IOCを理解する

IOCの技術的実現

Spring構成ファイル

Springコンテナによって作成されたオブジェクトの特性

IOCを使用してユーザー登録操作をシミュレートします

IOCの概要



IOCを理解する

  • 制御:オブジェクトの作成、プロパティの割り当て、オブジェクト宣言のサイクル管理
  • 反転:オブジェクトを管理する開発者の権限を、コード外のコンテナー実装にシフトします。オブジェクト管理はコンテナによって行われます。
  • 転送:開発者は新しいコンストラクターを使用して、コード内にオブジェクトを作成します。開発者は、オブジェクトの作成、プロパティの割り当て、およびオブジェクトの作成と破棄のプロセス全体を習得しました。開発者はオブジェクトを完全に制御できます。

 概要:コンテナーを介して、コンテナー内のオブジェクトを使用できます(コンテナーがオブジェクトを作成し、オブジェクト属性が割り当てられ、オブジェクトがアセンブルされます)。

             Springは、オブジェクトを管理し、オブジェクトを作成し、プロパティに値を割り当てることができるコンテナです

IOCの技術的実現

(依存性注入)DI(依存性注入):略語はDIで、これはIoCの技術的な実装です。プログラムは、使用するオブジェクトの名前を指定するだけで済みます。オブジェクトの作成方法、コンテナからのオブジェクトの検索方法、およびオブジェクトの取得方法は、コンテナ自体によって実装されます。

  • 依存関係:  たとえば、ClassAクラスはClassBのプロパティまたはメソッドを使用します。これはClassAと呼ばれ、ClassBに依存します。

例えば:

public class ClassB{
    
    public void createOrder(){}
}

public class ClassA{
    //属性
    private ClassB  b = new ClassB();
    
    public void buy(){
        b.createOrder();
    }
}

执行ClassA的buy()
ClassA a  = new ClassA();
a.buy();

        Springコンテナは、Beanと呼ばれるすべてのJavaオブジェクトの作成と管理を担当するスーパーファクトリです。Springコンテナはコンテナ内のBean間の依存関係を管理し、Springは「依存性注入」を使用してBean間の依存関係を管理します。IoCを使用して、オブジェクト間のデカップリングとデカップリングを実現します。

Spring構成ファイル

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans               http://www.springframework.org/schema/beans/spring-beans.xsd">

</beans>

Spring標準構成ファイル:

  1. ルートタグはbeansです
  2. Beanの後には、制約ファイルの説明があります
  3. Beanの中にはBean宣言があります
  4. Beanとは:Beanは、Javaオブジェクトであり、Beanと呼ばれるSpringコンテナによって管理されるJavaオブジェクトです。

Springコンテナによって作成されたオブジェクトの特性

  • コンテナオブジェクト(ApplicationContext)インターフェイスApplicationContextオブジェクトを介して使用される他のJavaオブジェクトを取得し、getBean( "id of <bean>")を実行します。
  • デフォルトでは、Springはクラスのパラメーターなしのコンストラクターを呼び出してオブジェクトを作成します
  • Springは構成ファイルを読み取り、一度にすべてのJavaオブジェクトを作成し、それらをマップに配置します

IOCを使用してユーザー登録操作をシミュレートします

要件:ユーザー登録をシミュレートする

分析:

  • daoインターフェース(UserDao)インターフェースでメソッドinsertUser(SysUser user)を定義し、インターフェースの実装クラスMySqlUserDaoを定義する必要があり、insertUser()メソッドはデータを操作する必要がなく、出力は「daoを使用して挿入操作を実行してください」。

  • サービスインターフェイス(UserService)を定義する必要があり、インターフェイスの実装クラスUserServiceImplを定義します。サービスの実装クラスにはUserDaoタイプの属性があります。サービスクラスにはメソッドaddUser(SysUser user)があります。

  • 操作は、サービスクラスのaddUser(){userDao.insertUser()}であり、登録を完了します。

  • ユーザーのデータを表すエンティティクラスSysUserを定義します。

        Springは複数の構成ファイルを管理します。最も一般的に使用される構成ファイルは、関係を含むものです。プロジェクトには、他の構成ファイルを含むインポートタグを持つ一般的なファイルがあります。

文法:

总的文件(xml)
<import resource="其他的文件的路径1"/>
<import resource="其他的文件的路径2"/>

关键字“classpath:”:表示类路径, 也就是类文件(class文件)所在的目录。 spring到类路径中加载文件
                   什么时候使用classpath: 在一个文件中要使用其他的文件, 需要使用classpath


IOCの概要

IOC:  オブジェクトの管理、コンテナーへのオブジェクトの配置、依存関係の作成、割り当て、および管理。

        デカップリングは、オブジェクトを管理することによって実現されます。IoCは、ビジネスロジックオブジェクト間の結合関係、つまりサービスとdao間の分離を解決します。

コンテナとして管理するのに適したSpringのオブジェクトは何ですか?

  • サービスオブジェクト、daoオブジェクト。
  • ツールクラスオブジェクト。

春に渡すのに適していないオブジェクト?

  • エンティティクラス。
  • サーブレット、リスナー、フィルタなどのWeb内のオブジェクト。それらはtomcatによって作成および管理されます。


おすすめ

転載: blog.csdn.net/m0_54925305/article/details/123135171