【Spring学习笔记】--IOC学习

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/YYZZHC999/article/details/82824751

spring ioc原理

Ioc—Inversion of Control,即“控制反转”,不是什么技术,而是一种设计思想。它能指导我们如何设计出松耦合、更优良的程序。在Java开发中,Ioc意味着将你设计好的对象交给容器控制,而不是传统的在你的对象内部直接控制。如何理解好Ioc呢?理解好Ioc的关键是要明确“谁控制谁,控制什么,为何是反转(有反转就应该有正转了),哪些方面反转了”
那我们来深入分析一下:

●谁控制谁,控制什么:

传统Java SE程序设计,我们直接在对象内部通过new进行创建对象,是程序主动去创建依赖对象;而IoC是有专门一个容器来创建这些对象,就是说控制对 象的创建;所以说,谁控制谁?当然是IoC 容器控制了对象;控制什么?那就是主要控制了外部资源获取(不只是对象包括比如文件等)。

●为何是反转,哪些方面反转了:

有反转就有正转,传统应用程序是由我们自己在对象中主动控制去直接获取依赖对象,也就是正转;而反转则是由容器来帮忙创建及注入依赖对象;为何是反转?因为由容器帮我们查找及注入依赖对象,对象只是被动的接受依赖对象,所以是反转;哪些方面反转了?依赖对象的获取被反转了。

所谓IOC,对于spring框架来说,就是由spring来负责控制对象的生命周期和对象间的关系。
综上所述,我们知道控制反转,就是控制权的转移,应用程序本身不负责依赖对象的创建和维护,而是由外部容器负责创建和维护。前面我们说过spring框架解决的是业务逻辑层和其他各层的松耦合问题。那么讲到这里,我们就应该知道,ioc就是各层之间松耦合的关键。所以说,ioc是spring的核心基础模块,贯穿始终spring整个生态框架。没了ioc,后面的模块也就不成立了。

在这里插入图片描述

IoC和DI由什么关系呢?

其实它们是同一个概念的不同角度描述,由于控制反转概念比较含糊(可能只是理解为容器控制对象这一个层面,很难让人想到谁来维护对象关系),所以2004年大师级人物Martin Fowler又给出了一个新的名字:“依赖注入”,相对IoC 而言,“依赖注入”明确描述了“被注入对象依赖IoC容器配置依赖对象”。

关键词:控制反转、松耦合、面向接口

BeanFactory与ApplicationContext

BeanFactory: IOC 容器的基本实现.
ApplicationContext: 提供了更多的高级特性. 是 BeanFactory 的子接口.
BeanFactory是Spring框架的基础设施,面向Spring本身;ApplicationContext 面向使用 Spring 框架的开发者,几乎所有的应用场合都直接使用 ApplicationContext 而非底层的 BeanFactory
无论使用何种方式, 配置文件时相同的

spring ioc demo

官方文档学习(英文):
https://docs.spring.io/spring/docs/5.0.8.RELEASE/spring-framework-reference/core.html#spring-core

spring demo步骤:
建立maven项目
添加spirng的依赖
编写接口和实现类
配置文件applicationContext.xml
编写测试类

还有一个spring ioc demo简单学习例子:
https://gitee.com/lv-success/git-second/tree/master/course-2-spring/springDemo

没有更多推荐了,返回首页