【Spring】IOC理解

关于IOC,有如下几点疑问:

  1. 什么是IOC
  2. IOC和@autowired
  3. IOC和依赖注入有何关联

一、什么是IOC

所谓 IOC ,“控制反转”,就是由 Spring IOC 容器来负责对象的生命周期和对象之间的关系,通俗的讲,就是原来需要手动使用new来创建对象,后面交个IOC容器来控制了。

IOC是一种思想,不是技术。

  1. 谁控制谁:在传统的开发模式下,我们都是采用直接 new 一个对象的方式来创建对象,也就是说你依赖的对象直接由你自己控制,但是有了 IOC 容器后,则直接由 IoC 容器来控制。所以“谁控制谁”,当然是 IoC 容器控制对象。
  2. 控制什么:控制对象。
  3. 为何是反转:没有 IoC 的时候我们都是在自己对象中主动去创建被依赖的对象,这是正转。但是有了 IoC 后,所依赖的对象直接由 IoC 容器创建后注入到被注入的对象中,依赖的对象由原来的主动获取变成被动接受,所以是反转。
  4. 哪些方面反转了:所依赖对象的获取被反转了。

二、IOC和@autowired

IOC,控制反转,是一种思想

@autowired是应用IOC思想的一种实现,“自动装配”注解

当Spring装配Bean属性时,有时候非常明确,就是需要将某个Bean的引用装配给指定属性。比如,如果我们的应用上下文中只有一个org.mybatis.spring.SqlSessionFactoryBean类型的Bean,那么任意一个依赖SqlSessionFactoryBean的其他Bean就是需要这个Bean。毕竟这里只有一个SqlSessionFactoryBean的Bean。
为了应对这种明确的装配场景,Spring提供了自动装配(autowiring)。与其显式的装配Bean属性,为何不让Spring识别出可以自动装配的场景。

从Spring2.5开始,开始支持使用注解来自动装配Bean的属性。它允许更细粒度的自动装配,我们可以选择性的标注某一个属性来对其应用自动装配。
Spring支持几种不同的应用于自动装配的注解。

  1. Spring自带的@Autowired注解。
  2. JSR-330的@Inject注解。
  3. JSR-250的@Resource注解。

@Autowired 注释,它可以对类成员变量、方法及构造函数进行标注,完成自动装配的工作。

三、IOC和依赖注入(Dependency Injection,DI)

IOC和DI是同一种概念不同角度的描述。

IoC的一个重点是在系统运行中,动态的向某个对象提供它所需要的其他对象。这一点是通过DI(Dependency Injection,依赖注入)来实现的。

参考博客:

https://www.jianshu.com/p/ad05cfe7868e

https://www.cnblogs.com/chenssy/p/9576769.html

https://www.jb51.net/article/157767.htm

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值