(二)Spring IOC 简介

基本概念:

Inversion of Control - 控制翻转
  IOC与大家熟知的依赖注入同理,. 这是一个通过依赖注入对象的过程 也就是说,它们所使用的对象,是通过构造函数参数,工厂方法的参数或这是从工厂方法的构造函数或返回值的对象实例设置的属性,然后容器在创建bean时注入这些需要的依赖。 这个过程相对普通创建对象的过程是反向的(因此称之为IoC),bean本身通过直接构造类来控制依赖关系的实例化或位置,或提供诸如服务定位器模式之类的机制。

IOC是一种设计思想,在Java开发中,将你设计好的对象交给容器控制,而不是显示地用代码进行对象的创建。把创建和查找依赖对象的控制权交给 IOC 容器,由 IOC 容器进行注入、组合对象之间的关系。这样对象与对象之间是松耦合、功能可复用(减少对象的创建和内存消耗),使得程序的整个体系结构可维护性、灵活性、扩展性变高。 所谓IOC ,就是:对象由spring来创建、管理,装配!

ApplicationContext是Spring IoC容器实现的代表,它负责实例化,配置和组装Bean。容器通过读取配置元数据获取有关实例化、配置和组装哪些对象的说明 。配置元数据可以使用XML、Java注解或Java代码来呈现。它允许你处理应用程序的对象与其他对象之间的互相依赖关系。

配置元数据:

  • 使用xml配置 - 简单、直观
  • 使用基于注解的配置 - @Component(@Controller @Service @Repository) 和@Autowired
  • 基于Java的配置 - @Configuration @Bean @Import
    从spring4.0开始支持springboot1.0 之后 springboot 完全采用javaConfig的方式进行开发

为什么使用IOC

假设当年电脑设计者把鼠标键盘都直接焊接在主板芯片上,一旦这些外设出现问题就会导致主板也无法启动,想换就需要拆开重新焊接,扩展性和维护性极差。放在我们开发中,就是代码改动很大,任何改动都会造成加大系统BUG产生的可能性。
所以设计师提供插口出来,可以接受不同的外设,外设变成可插拨,坏了只需要拔掉换一个,相当于开发中改个配置。

接口分离原则ISP(the Interface Segregation Principle)

模块间通过抽象接口(插口)隔离开,不通过具体的类或实现(外设)耦合起来。
但是需要更换实现时,还是需要改动代码才能匹配,无法做到热插拔。

依赖倒置原则DIP(the Dependency Inversion Principle)

电脑需要有外设才能正常启动,上层依赖下层。
依赖倒置原则翻转了上下层依赖关系,让电脑,外设成为独立的对象,当上层(主机)没有下层(外设)时可以正常使用,但是下层(外设)没有上层(主机)则毫无用处,控制权就被翻转了(IOC)。外设需要依赖USB(DI)才能使用。

正转:主板 — 焊接 —> 鼠标 电脑没有鼠标就不能启动
反转:电脑 <— 依赖 — 鼠标引入DI可以实现IOC

外设有问题快速换一个,只会有极小的改动和影响,相当于代码变更少。

DI 与 IOC

DI和IOC笼统的讲是一个东西,但是他们本质上还是有区别的。IOC是从容器的角度描述,DI是从应用程序的角度描述。
IOC是DIP的设计思想,DI是IOC的具体实现。

IOC的优点

解耦
集中管理
功能可复用(减少对象的创建和内存消耗)
是程序的整个体系结构可维护性、灵活性、扩展性变高

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值