制御の反転と依存性注入の春-反転

1.制御の反転(IOC制御の反転)

まず、制御の概念を理解しましょう

控制:指的是对成员变量赋值的控制权
控制反转:把对于成员变量赋值的控制权,从代码中反转(转移)到Spring工厂和配置文件中完成
好处:可以解耦合
底层原理:工厂设计模式
  • Springを学習していないときは、メンバー変数の割り当てを完了するためのコードに直接アクセスします。
  • これは、メンバー変数への割り当ての制御がコードに与えられていることも示しています
  • このように、カップリング
public class UserServiceImpl implements UserService {
    
    
     private UserDao userDao=new UserDAOImpl();
     
    @Override
    public void register(User user) {
    
    
        userDao.save(user);
    }

    @Override
    public void login(String name, String password) {
    
    
        userDao.queryUserByNameAndPassword(name ,password);
    }
}

しかし、Springを学習した後、構成ファイルとSpringファクトリを介してメンバー変数に値を割り当てることができます

  • このとき、メンバー変数の割り当ての制御は、Spring構成ファイルとSpringファクトリに引き継がれます。
  • これの利点は、分離できることです
  • このとき、制御はコードからSpring構成ファイルとSpringファクトリに移されます。
public class UserServiceImpl implements UserService {
    
    
   
    private UserDao userDao;

    @Override
    public void register(User user) {
    
    
        userDao.save(user);
    }

    @Override
    public void login(String name, String password) {
    
    
        userDao.queryUserByNameAndPassword(name ,password);
    }
}
 <bean id="userdao" class="com.zyh.basic.UserDAOImpl"></bean>
    <bean id="userservice" class="com.zyh.basic.UserServiceImpl">
        <property name="userDao" >
            <ref bean="userdao"></ref>
        </property>
    </bean>

制御の反転とは、実際には、メンバー変数の割り当ての制御がコードからSpring構成ファイルおよびSpringファクトリに転送されることを意味します。

Springは、IOCコンテナを介してすべてのJavaオブジェクトのインスタンス化と初期化を管理し、オブジェクト間の依存関係を制御します。IOCコンテナコンテナによって管理されるJavaオブジェクトをSpring Beanと呼びます。これは、新しいオブジェクトを作成する場合と同じです。

2.依存性注入(略してDI)

依存性注入はSpringでのプログラミング方法です

  • インジェクション:Springのファクトリと構成ファイルを介してオブジェクト(Bean、コンポーネント)のメンバー変数に値を割り当てます
  • 依存関係:クラスAはクラスBを使用する必要があります。つまり、AはBに依存します。依存関係があると、クラスBをAのメンバー変数として定義し、最後にSpringの構成ファイルを介して注入(割り当て)できます。
  • 依存性注入は分離することができます
    ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/qq_52797170/article/details/124222862