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

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

何为依赖,何为注入

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成员变量赋值时,就叫做注入

何为控制,何为反转

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

DI ≠ IOC

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值