五分钟带你快速学习Spring IOC
目录
- 一、IOC底层原理:
- 1、IOC过程
- 2、IOC接口
- 二、ioc容器bean管理xml方式(创建对象和set注入)
- 三、ioc操作bean管理(基于xml方式)
- 四、IOC操作Bean管理(xml注入其他类型属性)
- 五、IOC操作Bean管理(注入属性-外部bean,内部bean,级联)
- 六、IOC操作Bean管理(xml注入集合属性)
- 七、IOC操作Bean管理(FactoryBean)
- 八、IOC操作Bean管理(bean作用域)
- 九、IOC操作Bean管理(bean生命周期)
- 十、IOC操作Bean管理(xml自动装配)
- 十一、IOC操作bean管理(外部属性文件)
- 十二、IOC操作bean管理(基于注解管理)
- 总结
Inversion of Control“控制反转”
降低代码之间的耦合度
其中最常见的的方式叫做依赖注入简称DI
什么是ioc
不是技术,而是一种设计思想。在Java开发中,IOC意味着将你设计好的对象交给容器控制,而不是传统的在你的对象内部直接控制。把对象创建和对象之间的调用交给Spring管理。
可控制反转是什么意思呢?
谁控制谁?
控制什么?
为何是反转(有反转就应该有正转了),哪些方面反转了?什么又是在正转呢?
- 谁控制谁,控制什么:一般来说,我们直接在对象内部通过new进行创建对象,是程序主动去创建依赖对象;而IOC是有专门一个容器来创建这些对象,即由IOC容器来控制对象的创建;
谁控制谁?是IOC容器控制了对象;
控制什么?那就是主要控制了外部资源获取(不只是对象包括比如文件等)
- 为何是反转,哪些方面反转了:有反转就有正转,传统应用程序是由我们自己在对象中主动控制去直接获取依赖对象,也就是正转;而反转则是由容器来帮忙创建及注入依赖对象;
为何是反转?因为由容器帮我们查找及注入依赖对象,对象只是被动的接受依赖对象,所以是反转
哪些方面反转了?依赖对象的获取被反转了。(主动变被动)
相关推荐
-
Spring核心IoC和AOP的理解
spring 框架的优点是一个轻量级笔记简单易学的框架,实际使用中的有点优点有哪些呢! 1.降低了组件之间的耦合性 ,实现了软件各层之间的解耦 2.可以使用容易提供的众多服务,如事务管理,消息服务等 3.容器提供单例模式支持 4.容器提供了AOP技术,利用它很容易实现如权限拦截,运行期监控等功能 5.容器提供了众多的辅助类,能加快应用的开发 6.spring对于主流的应用框架提供了集成支持,如hibernate,JPA,Struts等 7.spring属于低侵入式设计,代码的污染极低 8.独立于
-
Spring的Ioc模拟实现详细介绍
简单来说就是当自己需要一个对象的时候不需要自己手动去new一个,而是由其他容器来帮你提供:Spring里面就是IOC容器. 例如: 在Spring里面经常需要在Service这个装配一个Dao,一般是使用@Autowired注解:类似如下 public Class ServiceImpl{ @Autowired Dao dao; public void getData(){ dao.getData(); } 在这里未初始化Dao直接使用是会报出空指针异常的,那么在Spring里面的做法就是通过反
-
spring中ioc是什么
IoC--Inversion of Control,控制反转 在Java开发中,IoC意味着将你设计好的类交给系统去控制,而不是在你的类内部控制.IoC是一种让服务消费者不直接依赖于服务提供者的组件设计方式,是一种减少类与类之间依赖的设计原则. DI--Dependency Injection(依赖注入) 即组件之间的依赖关系由容器在运行期决定,形象的来说,即由容器动态的将某种依赖关系注入到组件之中. 依赖注入的目标并非为软件系统带来更多的功能,而是为了提升组件重用的概率,并为系统搭建一个灵活.
-
spring的IoC和DI详解
这里先来简单介绍下IoC和DI的区别: IOC:翻译过来是控制反转,将对象的创建权由Spring管理,HelloService不需要自己去创建,Spring可以帮你创建. DI:依赖注入,在我们创建对象的过程中,把对象依赖的属性注入到我们的类中. 我们现在编写的类是没有其它的属性的,如果你学过UML这种设计的话,面向对象中对象中的几种关系 简单来书,IoC更像是一种思想,DI是一种行为. 另一种说法是,ioc是目的,di是手段.ioc是指让生成类的方式由传统方式(new)反过来,既程序员不调用n
-
spring在IoC容器中装配Bean详解
1.Spring配置概述 1.1.概述 Spring容器从xml配置.java注解.spring注解中读取bean配置信息,形成bean定义注册表: 根据bean定义注册表实例化bean: 将bean实例放入bean缓存池: 应用程序使用bean. 1.2.基于xml的配置 (1)xml文件概述 xmlns------默认命名空间 xmlns:xsi-------标准命名空间,用于指定自定义命名空间的schema文件 xmlns:xxx="aaaaa"-------自定义命名空间,xx
-
简单实现Spring的IOC原理详解
控制反转(InversionofControl,缩写为IoC) 简单来说就是当自己需要一个对象的时候不需要自己手动去new一个,而是由其他容器来帮你提供:Spring里面就是IOC容器. 例如: 在Spring里面经常需要在Service这个装配一个Dao,一般是使用@Autowired注解:类似如下 public Class ServiceImpl{ @Autowired Dao dao; public void getData(){ dao.getData(); } 在这里未初始化Dao直接
-
Spring中IoC优点与缺点解析
本文为大家分享了Spring中IoC优点与缺点,供大家参考,具体内容如下 1. 优点 我们知道,在Java基本教程中有一个定律告诉我们:所有的对象都必须创建:或者说:使用对象之前必须创建,但是现在我们可以不必一定遵循这个定律了,我们可以从Ioc容器中直接获得一个对象然后直接使用,无需事先创建它们. 这种变革,就如同我们无需考虑对象销毁一样:因为Java的垃圾回收机制帮助我们实现了对象销毁:现在又无需考虑对象创建,对象的创建和销毁都无需考虑了,这给编程带来的影响是巨大的. 我们从一个简单例子开始,
-
五分钟带你快速学习Spring IOC
目录 一.IOC底层原理: 1.IOC过程 2.IOC接口 二.ioc容器bean管理xml方式(创建对象和set注入) 三.ioc操作bean管理(基于xml方式) 四.IOC操作Bean管理(xml注入其他类型属性) 五.IOC操作Bean管理(注入属性-外部bean,内部bean,级联) 六.IOC操作Bean管理(xml注入集合属性) 七.IOC操作Bean管理(FactoryBean) 八.IOC操作Bean管理(bean作用域) 九.IOC操作Bean管理(bean生命周期) 十.I
-
五分钟带你快速了解vue的常用实例方法
目录 前言 一.vue实例方法和实例数据 1.vm.$set 2.vm.$delete 3.vm.$watch 二.实例方法和事件 1.vm.$on 2.vm.$emit 3.vm.$once 4.vm.$off 三.实例方法和生命周期 1.vm.$mount 2.vm.$destroy 3.vm.$nextTick 总结 前言 在了解vue的常用的实例方法之前,我们应该先要了解其常用的实例属性,你能了解到的vue实例属性有哪些呢?小编在这里就列举了几个常用的vue实例的属性.大家可以一起参考学
-
五分钟带你搞懂python 迭代器与生成器
前言 大家周末好,今天给大家带来的是Python当中生成器和迭代器的使用. 我当初第一次学到迭代器和生成器的时候,并没有太在意,只是觉得这是一种新的获取数据的方法.对于获取数据的方法而言,我们会一种就足够了.但是在我后来Python的使用以及TensorFlow等学习使用当中,我发现很多地方都用到了迭代器和生成器,或者是直接使用,或者是借鉴了思路.今天就让我们仔细来看看,它们到底是怎么回事. 迭代器 我们先从迭代器开始入手,迭代器并不是Python独有的概念,在C++和Java当中都有itera
-
五分钟带你了解Java的接口数据校验
本篇文章给大家分享平时开发中总结的一点小技巧!在工作中写过Java程序的朋友都知道,目前使用Java开发服务最主流的方式就是通过Spring MVC定义一个Controller层接口,并将接口请求或返回参数分别定义在一个Java实体类中,这样Spring MVC在接收到Http请求(POST/GET)后,就会自动将请求报文自动映射成一个Java对象.这样的代码通常是这样写的: @RestController public class OrderController { @Autowired pr
-
十分钟带你快速上手Vue3过渡动画
目录 写在前面 Vue的transition组件 过渡demo class的命名规则 使用animation 过渡模式 appear属性 animate.css库的使用 使用动画序列 使用自定义过渡class 写在最后 写在前面 在实际开发中,为了增加用户体验,经常会使用到过渡动画,而过渡动画在CSS中是通过transition和animation实现的.而在Vue中,Vue本身中内置了一些组件和API可以帮助我们方便的实现过渡动画效果:接下来我们就学习一下. Vue的transition组件
-
十分钟带你快速了解React16新特性
前段时间React的16版本发布了,采用了MIT开源许可证,新增了一些新的特性. Error Boundary render方法新增返回类型 Portals 支持自定义DOM属性 setState传入null时不会再触发更新 更好的服务器端渲染 新的打包策略 ... 1. 使用Error Boundary处理错误组件 之前,一旦某个组件发生错误,整个组件树将会从根节点被unmount下来.React 16修复了这一点,引入了Error Boundary的概念,中文译为"错误边界",当某
-
三分钟带你快速学会微信小程序的条件渲染
目录 前言 1.wx:if实现条件渲染 2.block结合wx:if使用 3.hiden实现条件渲染 4. wx:if vs hidden 补充:hidden 和 wx:if 的区别 总结 前言 这篇文章是三分钟学会小程序的条件渲染教程,所谓的条件渲染就是判断是否需要把代码渲染到展示页面上.使用以下三种方式可以实现条件渲染,各自有不同的应用场景,只有熟练掌握其用法,在使用时才能得心应手. 1.wx:if实现条件渲染 在框架中,使用 wx:if="" 来判断是否需要渲染该代码块: <
-
六分钟带你快速学会react中的useMemo
目录 概念 useMemo 栗子 筛选偶数 每秒获取时间刷新页面 如何优化 useCallback.React.memo 总结 概念 react 中是通过一次次的 re-render (重新渲染)保持我们的值及时的更新到页面上的,每次重新渲染都是一次快照,可以把它想象成一张张的照片,在某个时刻它应该是什么样子的 useMemo 把创建函数和依赖数组项作为参数传入 useMemo,它仅仅会在数组依赖项中的值改变时才会重新计算值 这种优化有助于避免在每次渲染时都进行高开销的计算 useMemo 的函
-
五分钟带你搞懂MySQL索引下推
目录 什么是索引下推 索引下推优化的原理 索引下推的具体实践 没有使用ICP 使用ICP 索引下推使用条件 相关系统参数 总结 如果你在面试中,听到MySQL5.6"."索引优化" 之类的词语,你就要立马get到,这个问的是"索引下推". 什么是索引下推 索引下推(Index Condition Pushdown,简称ICP),是MySQL5.6版本的新特性,它能减少回表查询次数,提高查询效率. 索引下推优化的原理 我们先简单了解一下MySQL大概的架构:
-
五分钟让你快速弄懂MySQL索引下推
大家好,我是老三,今天分享一个小知识点--索引下推. 如果你在面试中,听到MySQL5.6"."索引优化" 之类的词语,你就要立马get到,这个问的是"索引下推". 什么是索引下推 索引下推(Index Condition Pushdown,简称ICP),是MySQL5.6版本的新特性,它能减少回表查询次数,提高查询效率. 索引下推优化的原理 我们先简单了解一下MySQL大概的架构: MySQL服务层负责SQL语法解析.生成执行计划等,并调用存储引擎层去执
随机推荐
- JSONP之我见
- python下载文件记录黑名单的实现代码
- php使用ZipArchive函数实现文件的压缩与解压缩
- JQuery组件基于Bootstrap的DropDownList(完整版)
- Ext对基本类型的扩展 ext,extjs,format
- node.js利用mongoose获取mongodb数据的格式化问题详解
- 记一次Centos服务器被挂马的抓马经历
- javascript字符串替换函数如何一次性全部替换掉
- java必学必会之static关键字
- 如何取得Repeater控件选择的项目及注意事项
- Python递归函数定义与用法示例
- Android 清除SharedPreferences 产生的数据(实例代码)
- php实现QQ空间获取当前用户的用户名并生成图片
- 用js取得鼠标所在位置的对象
- SQL Server 2005降级到2000的正确操作步骤分享
- mysql启动报错MySQL server PID file could not be found
- jQuery图片轮播(二)利用构造函数和原型创建对象以实现继承
- python用Pygal如何生成漂亮的SVG图像详解
- 如何规划一个高容量的Apache服务器
- C语言简单实现求n阶勒让德多项式的方法