Spring:IOC 与DI

IOC:是指控制反转,是一种设计理念,IOC不是某一种具体技术的实现,IOC是一种设计理念!IOC是一种设计理念!IOC是一种设计理念!他要求由第三方来对对象进行控制和创建

1, IDAO dao = new UserDAO()

使用接口对类进行抽象,如果当前工程由1000个类需要Dao,那么就需要写1000行这样的代码,但是如果某天不再使用UserDao,而是要使用新的User类,我们就需要去找到这些代码进行修改,工作量非常大。

对于当前使用new 的方式,是指在编译时就决定了当前对象就是UserDAO(),不可能有其他的变化。故考虑在运行时动态的对对象进行创建。

2,在第一个问题的困扰下,Spring最早的版本就出现了

IDao dao = (IDao)new applicationContext.getBean("userDAO")

没有任何与UserDAO,相关的东西,程序编译时并不知道要绑定哪一个对象,只有在运行之后

applicationContext这个用于管理对象的容器来决定生成哪个对象

userDAO与我们的配置文件是相对应的

配置文件:

<bean id = "userDAO" class="com.imooc.dao.UserDAO"/>

<bean id = "userDAO" class="com.imooc.dao.UserExtDao"/>

userDAO userDAO相匹配,实例化了UserDAO对象,在程序运行时由applicationContext

对象动态实例化UserDAO

如果要将UserDAO改为UserExtDao,只用在配置文件中改为UserExtDao。

通过applicationContext这个用于管理对象的容器,可以将整个程序的依赖有效的进行解耦.

关于控制反转:在原始的情况下,使用new关键字,叫做正向控制,由程序决定创建哪个对象。

控制反转就是将对象的控制权交给第三方的对象容器,由对象容器在运行时创建对象,赋给对应的

变量。IOC的好处是让我们对象与对象的引用进行了解耦,当系统底层的类发生变化时,只需要修

改配置文件即可。

applicationContext:们这个对象的作用就是对配置文件中的对象进行创建和控制,所以

applicationContext这个对象被称为IOC容器。

DI:DI依赖注入,具体的技术实现,是对我们宏观的IOC理念的一种技术上的诠释,在Spring中使用反射二号工厂模式来实现DI,由对象容器运行时动态注入对象。

主要基于

1.反射:在运行时进行运行,创建,办理,

2,工厂模式

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

天海奈奈

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值