【学习笔记】Spring之控制反转(IoC)与依赖注入(DI)

    科技2026-04-09  5

    怎么理解控制反转与依赖注入

    何为依赖,何为注入

    public class User{ private String username; private String password; private UserInfo userinfo; public UserInfo getUsreInfo(){ return this.UserInfo; } public void setUserInfo(UserInfo userInfo){ this.userInfo=userInfo; } } public class UserInfo{ private String phoneNumber; private String Address; private String sex; }

    User类中需要使用到用户信息类,用户类对用户信息产生了依赖。当使用setUserInfo()方法对User类中的userinfo成员变量赋值时,就叫做注入

    何为控制,何为反转

    在传统模式中: 客户端类需要得到一个用户类对象,但是用户类对象又依赖于用户信息类中的数据,所以我们需要在客户端类中new一个用户信息对象,new一个用户类对象,客户端类控制用户类与用户信息类的实例化,手动将用户信息类对象注入用户类对象。程序可以做到正常工作,但是代码被写死了,如果要更改需求,客户端需要产品类对象,这时候我们就需要手动更改代码new一个产品类对象,如果有一千个地方需要更改,这个工作量可想而知。 使用控制反转后: 客户端类需要得到用户类对象,这时候客户端类并不是直接new一个用户类与用户信息类,而是向IoC容器索要,由容器控制用户类对象与用户信息类对象的实例化与依赖注入。之前是客户端自己new,现在是向容器索要,客户端的创建方式发生了反转****之前是手动注入,现在是IoC容器进行注入,注入的方式发生了反转

    DI ≠ IOC

    IoC的概念更宽广一些,而DI是IoC的主要实现方式,但这并不意味着DI就是IoC,将二者混为一谈 这是不对的,很容易误导他人。

    Processed: 0.009, SQL: 9