SpringIOC是什么?
一、Spring IOC
- IOC不是一种技术而是一种设计思想,Ioc意味着将你设计好的对象交给容器控制,而不是传统的在你的对象内部直接控制。
- 在传统Java SE程序设计,我们直接在对象内部通过new进行创建对象,IoC是有专门一个容器来创建这些对象,即由Ioc容器来控制对 象的创建;
- 何为控制反转?
传统应用程序是由我们自己在对象中主动控制去直接获取依赖对象,也就是正转;而反转则是由容器来帮忙创建及注入依赖对象;
因为由容器帮我们查找及注入依赖对象,对象只是被动的接受依赖对象,所以是反转;哪些方面反转了?依赖对象的获取被反转了。
二、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是什么?相关推荐
- Java开发面经分享:SpringIOC中复杂属性如何“巧妙
private Map<String, Object> maps;private Properties properties; } 下面我们将依次讲解如何给赋值属性赋值.**1.为类属性赋 ...
- springIOC的那些事
springIOC动态代理的那些事儿 1.发现问题 今天在使用spring的IOC容器时发现了这样的一个问题: 首先有一个接口定义如下: public interface BookShopSer ...
- SpringIOC容器中Bean的生命周期
SpringIOC容器 可以管理Bean的生命周期 Spring允许在Bean生命周期的特定点,执行定制的任务. SpringIOC容器中,Bean的生命周期如下: 1.通过构造器或工厂方法创建Bea ...
- 手写Spring-ioc 注入 jdk反射实现 绝对满足你的好奇心哦 解决怎么我写了一个注解就可以直接注入了?
Spring-Ioc原理 解析 我们学完Spring后,大都就直接接着学习之后的内容啦,但是我想偶尔回过头来看一看,才能走的更远啊. 温故而知新. 关于Spring是怎么实现的?怎么我写了一个注解就可 ...
- SpringIOC的依耐注入DI---set注入---constructor有参构造注入---了解P命名空间---了解SpEL
依耐注入DI DI 依耐注入通俗来将就是给对象的成员变量(属性) 赋值 依耐注入的两种方式 ⚫ set注入 ⚫ 构造器注入 set注入 set注入(主流) ⚫ 名称:property ⚫ 类型:标签 ...
- SpringIOC配置文件「bean」标签的属性id class name scope init-method destroy-method factory-bean factory-method
spring 引入Spring 在没有使用spring的时候写代码的三层架构的时候,dao层与service紧密联系,service与controller紧密联系,在service中new的dao接口 ...
- SpringIOC容器介绍
IOC & DI 概述 配置 bean 配置形式:基于 XML 文件的方式:基于注解的方式 Bean 的配置方式:通过全类名(反射).通过工厂方法(静态工厂方法 & 实例工厂方法).F ...
- SpringIOC概述
什么是SpringIOC 什么是SpringIOC,就是把每一个bean(实体类)与bean(实体了)之间的关系交给第三方容器进行管理. 什么是SpringIOC底层实现原理 1.读取bean的XML ...
- 手写springioc注解注入对象基本实现
还是要养成写注释的习惯,首先一个代码想让人家看懂的情况下,记住一点,重构加设计模式,其实设计模式也比较好,达到别人可易读性,这是我要跟你讲的,而且你们不写注释是一个不好的习惯,你们一定要养成我善于重构 ...
- springioc注解版运行效果演示
我们讲一个新的知识,就是手写一下IOC容器,怎么手写一下SpringIOC XML版本,还有手写一下SpringIOC注解的版本,那么相对来说,我们用注解版本的次数可能要多点,很少用到XML版本,XM ...
最新文章
- 数据结构——栈——中缀表达式和后缀表达式
- 【Python】append和extend的区别
- C异常处理机制:setjmp和longjmp
- ORACLE基础学习-RMAN应用-控制文件恢复
- 互联网寒冬!技术站最全MySQL数据库实战规范
- DataSet和ListT 泛型之间互相转换 (转载, 作者写的很好)
- Zepto.js 使用手册
- 《码农翻身》各章节阅读连接
- VAF:Variant Allel Frequency简介
- 宜信微服务架构落地及其演进
- 解封ChatGPT我只用了一句话
- Centos7 Python3.6+Qt5.12.9+ PyQt5.12+Sip v5+QScintilla-2.10+Eric6
- 【中亦安图】风险提醒之Oracle RAC高可用失效(2)
- 不定积分——1/(1+x^4)的不定积分
- matlab移相法实现单边带调制,移相法实现单边带信号的调制
- TruckSim搭仿真车跑偏解决办法
- java 1.8(jdk1.8安装教程)
- 比word更适合编写方案文档的工具Latex
- java学习之破壳hello world
- Python爬虫之模拟登录豆瓣获取最近看过的电影