一、Spring IOC

  1. IOC不是一种技术而是一种设计思想,Ioc意味着将你设计好的对象交给容器控制,而不是传统的在你的对象内部直接控制。
  2. 在传统Java SE程序设计,我们直接在对象内部通过new进行创建对象,IoC是有专门一个容器来创建这些对象,即由Ioc容器来控制对 象的创建;
  3. 何为控制反转?
    传统应用程序是由我们自己在对象中主动控制去直接获取依赖对象,也就是正转;而反转则是由容器来帮忙创建及注入依赖对象;
    因为由容器帮我们查找及注入依赖对象,对象只是被动的接受依赖对象,所以是反转;哪些方面反转了?依赖对象的获取被反转了。

二、IOC能做什么

1.IOC控制反转

IoC(Inversion of Control,控制反转)。这是spring的核心,贯穿始终。所谓IoC,对于spring框架来说,就是由spring来负责控制对象的生命周期和对象间的关系。而Spring提供了IOC容器来帮我们生成所需要的对象。也就是说在我们原先的对象中有用到其他对象的地方Spring会帮我们来注入。不用我们再去考虑这些问题。

2.DI(依赖注入)

spring提供了三种方式来依赖注入,有构造方法注入,setter方法注入以及接口注入。使用构造方法注入需要注意的一点就是要避免循环依赖。所谓的循环依赖指的就是在A对象的构造方法中Spring要注入B,而在B对象中Spring要注入A。这个时候会形成一个闭环因为Spring不知道该先注入哪一个接着会抛出异常。而Spring建议的处理方式是说如果遇到这种情况的话就改用Setter方式注入。
而spring就是通过反射来实现注入的。
理解DI的关键是:“谁依赖谁,为什么需要依赖,谁注入谁,注入了什么”。
谁依赖谁:应用程序依赖于IoC容器;
为什么需要依赖:应用程序需要IoC容器来提供对象需要的外部资源;
谁注入谁:IoC容器注入应用程序某个对象,应用程序依赖的对象;
注入了什么:注入某个对象所需要的外部资源(包括对象、资源、常量数据)

SpringIOC是什么?相关推荐

  1. Java开发面经分享:SpringIOC中复杂属性如何“巧妙

    private Map<String, Object> maps;private Properties properties; } 下面我们将依次讲解如何给赋值属性赋值.**1.为类属性赋 ...

  2. springIOC的那些事

       springIOC动态代理的那些事儿 1.发现问题 今天在使用spring的IOC容器时发现了这样的一个问题: 首先有一个接口定义如下: public interface BookShopSer ...

  3. SpringIOC容器中Bean的生命周期

    SpringIOC容器 可以管理Bean的生命周期 Spring允许在Bean生命周期的特定点,执行定制的任务. SpringIOC容器中,Bean的生命周期如下: 1.通过构造器或工厂方法创建Bea ...

  4. 手写Spring-ioc 注入 jdk反射实现 绝对满足你的好奇心哦 解决怎么我写了一个注解就可以直接注入了?

    Spring-Ioc原理 解析 我们学完Spring后,大都就直接接着学习之后的内容啦,但是我想偶尔回过头来看一看,才能走的更远啊. 温故而知新. 关于Spring是怎么实现的?怎么我写了一个注解就可 ...

  5. SpringIOC的依耐注入DI---set注入---constructor有参构造注入---了解P命名空间---了解SpEL

    依耐注入DI DI 依耐注入通俗来将就是给对象的成员变量(属性) 赋值 依耐注入的两种方式 ⚫ set注入 ⚫ 构造器注入 set注入 set注入(主流) ⚫ 名称:property ⚫ 类型:标签 ...

  6. SpringIOC配置文件「bean」标签的属性id class name scope init-method destroy-method factory-bean factory-method

    spring 引入Spring 在没有使用spring的时候写代码的三层架构的时候,dao层与service紧密联系,service与controller紧密联系,在service中new的dao接口 ...

  7. SpringIOC容器介绍

    IOC & DI 概述 配置 bean 配置形式:基于 XML 文件的方式:基于注解的方式 Bean 的配置方式:通过全类名(反射).通过工厂方法(静态工厂方法 & 实例工厂方法).F ...

  8. SpringIOC概述

    什么是SpringIOC 什么是SpringIOC,就是把每一个bean(实体类)与bean(实体了)之间的关系交给第三方容器进行管理. 什么是SpringIOC底层实现原理 1.读取bean的XML ...

  9. 手写springioc注解注入对象基本实现

    还是要养成写注释的习惯,首先一个代码想让人家看懂的情况下,记住一点,重构加设计模式,其实设计模式也比较好,达到别人可易读性,这是我要跟你讲的,而且你们不写注释是一个不好的习惯,你们一定要养成我善于重构 ...

  10. springioc注解版运行效果演示

    我们讲一个新的知识,就是手写一下IOC容器,怎么手写一下SpringIOC XML版本,还有手写一下SpringIOC注解的版本,那么相对来说,我们用注解版本的次数可能要多点,很少用到XML版本,XM ...

最新文章

  1. 数据结构——栈——中缀表达式和后缀表达式
  2. 【Python】append和extend的区别
  3. C异常处理机制:setjmp和longjmp
  4. ORACLE基础学习-RMAN应用-控制文件恢复
  5. 互联网寒冬!技术站最全MySQL数据库实战规范
  6. DataSet和ListT 泛型之间互相转换 (转载, 作者写的很好)
  7. Zepto.js 使用手册
  8. 《码农翻身》各章节阅读连接
  9. VAF:Variant Allel Frequency简介
  10. 宜信微服务架构落地及其演进
  11. 解封ChatGPT我只用了一句话
  12. Centos7 Python3.6+Qt5.12.9+ PyQt5.12+Sip v5+QScintilla-2.10+Eric6
  13. 【中亦安图】风险提醒之Oracle RAC高可用失效(2)
  14. 不定积分——1/(1+x^4)的不定积分
  15. matlab移相法实现单边带调制,移相法实现单边带信号的调制
  16. TruckSim搭仿真车跑偏解决办法
  17. java 1.8(jdk1.8安装教程)
  18. 比word更适合编写方案文档的工具Latex
  19. java学习之破壳hello world
  20. Python爬虫之模拟登录豆瓣获取最近看过的电影

热门文章

  1. 基于51单片机简易数字示波器Proteus仿真
  2. 如何使用python实现简单爬取网页数据并导入MySQL中的数据库
  3. 对Aurora8b10b的简要理解
  4. 橙色的商务企业网站模板 html整站下载 企业网站模板
  5. eclipse运行出现unable to launch 错误
  6. PTA-520钻石争霸赛题解【c/c++ 完整思路+代码】
  7. 七夕 | 情人节 | 用Python给你送个钻石戒指
  8. pg_pdr的生成方式
  9. 顺序表与链表结构及解析
  10. 【Linux服务器架设】存储服务器构建原理-NFS