【Spring】Spring IOC理论推导

Spring IOC理论推导:

IOC理论推导:

以前方式(使用IOC之前):
1.UserDao(接口):
在这里插入图片描述
2:UserDaoImpl(实现类):
在这里插入图片描述
3:UserService(业务接口):
在这里插入图片描述
4:UserServiceImpl(业务实现类):
在这里插入图片描述
5:MyTest(测试类):
在这里插入图片描述
如果此时我们还需要一个需求。那么首先需要编写一个新的用户实现类:UserDaoMsqlImpl
在这里插入图片描述
然后修改UserServiceImpl(服务实现类)中的对象:
在这里插入图片描述
在这里插入图片描述
如果此时又来一个新需求(UserDaoOracleImpl)
在这里插入图片描述
那么我们又要去UserServiceImple中手动的修改对象:
在这里插入图片描述
在这里插入图片描述
如果此时我们又要使用SqlServer,又需要去UserServiceImpl里面修改相应的实现(UserService userService = new UserSqlserverImpl()),假设我们的这种需求非常大,这种方式根本不适用,甚至反人类。每次变动,都需要修改大量代码,这种设计的耦合性太高,牵一发而动全身。
在以上这种业务中,用户的需求可能会影响我们原来的代码,我们需要根据用户的需求取修改原来的代码!如果程序代码量十分大,修改一次的成本代价十分昂贵!
IOC方式:
为了避免每当出现新需求,我们都要去手动修改对象。我们可以在UserServiceImpl(服务实现类)设置一个接口(之前都是通过new来创建对象)。然后通过set方法动态实现值的注入!
在这里插入图片描述
此时程序的主动权在用户手上,用户想调用哪个只需在setUserDao中放入所需的需求(Oracle就new UserDaoOracleImp).
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200103162703791.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2x4MTU2OTE4MjE5ODQ=,size_16,color_FFFFFF,t_70在这里插入图片描述
之前程序是主动创建对象!控制权在程序员手上!
使用了set注入后,程序不在具有主动性。而是变成了被动的接受对象!
这种思想从本质上解决了问题,我们程序员不用再去管理对象的创建。系统的耦合性大大降低,可以更加专注的在业务的实现上!这是IOC的原型!

IOC本质:

控制反转IOC(Inversion of Control),是一种设计思想,DI(依赖注入)是实现IOC的一种方法,也有人认为DI只是IOC的另一种说法,在IOC的程序中,我们使用面向对象编程,对象的创建与对象之间的依赖关系完全硬编码在程序中,对象的创建由程序自己控制;控制反转后将对象的创建转移给第三方,个人认为所谓控制反转就是:获得依赖对象的方式反转了。
控制反转是一种通过描述(XML或注解)并通过第三方生产或获取特定对象的方式。在Spring中实现控制反转的是IOC容器,其实现方法是依赖注入。
IOC是Spring框架的核心内容,使用多种方式完美的实现了IOC,可以使用XML配置,也可以使用注解,新版本的Spring也可以实现零配置(自动装配)实现IOC。
采用XML方式配置bean的时候,bean的定义信息是和实现分离的,而采用注解的方式可以把两者合为一体,bean的定义信息直接以注解的方式定义在实现类中,从而达到了零配置的目的。
spring容器在初始化的时候先读取配置文件,根据配置文件或元数据创建与组织对象存入容器中,程序使用时再从IOC容器中取出需要的对象。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值