Spring核心(ioc控制反转)
IoC,Inversion Of Control 即控制反转,由容器来管理业务对象之间的依赖关系,而非传统方式中的由代码来管理。
其本质。即将控制权由应用程序代码转到了外部容器,控制权的转移就是所谓的反转,其带来的最大的优点是减少了业务对象之间的依赖程度,即实现了解耦。
Spring的IoC容器主要使用DI(Dependency Injection,依赖注入)方式实现的。不须要主动查找,对象的查找、定位和创建所有由容器管理,容器会将符合依赖关系的对象通过属性(setter等)或者构造函数传递给须要的对象。
使用IoC能够带来下面优点:
1、查询依赖操作和应用代码分离。大量降低了Factory和Singleton的数量,使代码层次更加清晰。主要原因是我们不再查找、定位、创建和管理对象之间的依赖关系了。都交给IoC容器管理了
2、没有侵入性,不须要依赖容器的API,也不须要实现一些特殊接口。这样我们的受控对象能够搬出容器进而单独使用。
3、能够从IoC容器中直接获得一个对象然后直接使用。而无需考虑对象的创建过程。(工厂模式)
从网上看了一个样例,认为不错。贴过来帮助我们理解:
我们是怎样找女朋友的?常见的情况是,我们到处去看哪里有长得美丽身材又好的mm。然后打听她们的兴趣爱好、qq号、电话号、ip号、iq号………,想办法认识她们。投其所好送其所要,然后嘿嘿……这个过程是复杂深奥的。我们必须自己设计和面对每一个环节。传统的程序开发也是如此。在一个对象中,假设要使用另外的对象,就必须得到它(自己new一个,或者从JNDI中查询一个),使用完之后还要将对象销毁(比方Connection等)。对象始终会和其它的接口或类藕合起来。
那么IoC是怎样做的呢?有点像通过婚介找女朋友,在我和女朋友之间引入了一个第三者:婚姻介绍所。婚介管理了非常多男男女女的资料,我能够向婚介提出一个列表,告诉它我想找个什么样的女朋友,比方长得像李嘉欣,身材像林熙雷。唱歌像周杰伦。速度像卡洛斯,技术像齐达内之类的。然后婚介就会依照我们的要求。提供一个mm,我们仅仅须要去和她谈恋爱、结婚即可了。
简单明了,假设婚介给我们的人选不符合要求,我们就会抛出异常。整个过程不再由我自己控制,而是有婚介这样一个类似容器的机构来控制。Spring所倡导的开发方式就是如此。全部的类都会在spring容器中登记。告诉spring你是个什么东西,你须要什么东西,然后spring会在系统执行到适当的时候,把你要的东西主动给你,同一时候也把你交给其它须要你的东西。全部的类的创建、销毁都由
spring来控制,也就是说控制对象生存周期的不再是引用它的对象,而是spring。对于某个详细的对象而言。曾经是它控制其它对象,如今是全部对象都被spring控制。所以这叫控制反转
事实上,我们能够把IoC看做是工厂模式的升华。IoC好比是一个大工厂,仅仅只是在这个大工厂里生成的对象都是在XML文件里定义的。然后利用Java的反射实例化。
在没有Spring之前我们也是这么做的,仅仅是Spring的IoC更加强大完好。
有利就有毙,IoC也有一定的弊端:
1、使用反射变成,在效率上有些损耗。
2、缺乏更加智能的IDE,写XML中时,错误不easy暴露。推迟到执行期才干发现。
但相对于IoC提高的维护性和灵活性来说,这点缺点又显得微不足道
写到最后,忽然想到《走遍美国》里。唱片公司制片在rebaca录制完唱片后对她说的一句话:Don't call us,we'll call you
用这句话来形容IoC再合适只是。
Spring核心(ioc控制反转)的更多相关文章
- Spring框架系列(3) - 深入浅出Spring核心之控制反转(IOC)
在Spring基础 - Spring简单例子引入Spring的核心中向你展示了IoC的基础含义,同时以此发散了一些IoC相关知识点; 本节将在此基础上进一步解读IOC的含义以及IOC的使用方式.@pd ...
- Spring-初识Spring框架-IOC控制反转(DI依赖注入)
---恢复内容开始--- IOC :控制反转 (DI:依赖注入)使用ioc模式开发 实体类必须有无参构造方法1.搭建Spring环境下载jarhttp://maven.springframework. ...
- Spring 01: Spring配置 + IOC控制反转 + Setter注入
简介 Spring框架是一个容器,是整合其他框架的框架 他的核心是IOC(控制反转)和AOP(面向切面编程),由20多个模块构成,在很多领域都提供了优秀的问题解决方案 特点 轻量级:由20多个模块构成 ...
- Spring的IOC控制反转和依赖注入-重点-spring核心之一
IoC:Inverse of Control(控制反转): 读作"反转控制",更好理解,不是什么技术,而是一种设计思想,好比于MVC.就是将原本在程序中手动创建对象的控制权,交由S ...
- Spring 04: IOC控制反转 + DI依赖注入
Spring中的IOC 一种思想,两种实现方式 IOC (Inversion of Control):控制反转,是一种概念和思想,指由Spring容器完成对象创建和依赖注入 核心业务:(a)对象的创建 ...
- 三大框架 之 Spring(IOC控制反转、DI依赖注入)
目录 常用词汇 left join与left outer join的区别 Struts2的标签库导入 Spring Spring概述 什么是Spring spring特点 下载 IOC 什么IOC 传 ...
- [转]Java Spring的Ioc控制反转Java反射原理
转自:http://www.kokojia.com/article/12598.html 学习一个东西的时候,如果想弄明白,最好想想框架内部是如何实现的,如果是我做我会怎么实现.下面我就写一个Ioc ...
- Spring之IOC/DI(反转控制/依赖注入)_入门Demo
在平时的java应用开发中,我们要实现某一个功能或者说是完成某个业务逻辑时至少需要两个或以上的对象来协作完成,在没有使用Spring的时候,每个对象在需要使用他的合作对象时,自己均要使用像new ob ...
- [转帖]什么是IOC(控制反转)、DI(依赖注入)
什么是IOC(控制反转).DI(依赖注入) 2018-08-22 21:29:13 Ming339456 阅读数 20642 原文地址(摘要了部分内容):https://blog.csdn.net ...
- 回顾Spirng ioc 控制反转
Spring的IoC(控制反转) .DI(依赖注入)这两个概念,对于初学Spring的人来说,总觉得IoC .DI这两个概念是模糊不清的,是很难理解的.结合网上对Spring Ioc的理解,回顾一下自 ...
随机推荐
- Leetcode 419.甲板上的战舰
甲板上的战舰 给定一个二维的甲板, 请计算其中有多少艘战舰. 战舰用 'X'表示,空位用 '.'表示. 你需要遵守以下规则: 给你一个有效的甲板,仅由战舰或者空位组成. 战舰只能水平或者垂直放置.换句 ...
- 九度oj 题目1458:汉诺塔III
题目描述: 约19世纪末,在欧州的商店中出售一种智力玩具,在一块铜板上有三根杆,最左边的杆上自上而下.由小到大顺序串着由64个圆盘构成的塔.目的是将最左边杆上的盘全部移到右边的杆上,条件是一次只能移动 ...
- iOS学习笔记25-录音和网络流媒体
.录音 AVFoundation框架还有一个AVAudioRecorder类专门处理录音操作,它同样支持多种音频格式. 先来了解下AVAudioRecorder的常用属性: @property (re ...
- NOJ——1624死胡同(胡搞模拟)
[1624] 死胡同 时间限制: 1000 ms 内存限制: 65535 K 问题描述 一个死胡同由排成一列的 n 个格子组成,编号从 1 到 n .实验室的“猪猪”一开始在1号格子,开始向前走,每步 ...
- 算法复习——哈希表+折半搜索(poj2549)
搬讲义~搬讲义~ 折半搜索感觉每次都是打暴力时用的啊2333,主要是用于降次··当复杂度为指数级别时用折半可以减少大量复杂度··其实专门考折半的例题并不多···一般都是中途的一个小优化··· 然后折半 ...
- java追加文本到文件末尾
public class Test { public static void main(String[] args) { method1("F:\\test.txt" , &quo ...
- Fedora 14 安装完后的设置 添加源 更新软件
1.添加源: (1)上海交大源:应用程序->系统工具->终端 输入 su 输入密码 输入 nano /etc/yum.repos.d/sjtu.repo 辅之以下内容: [F ...
- 在idea中部署远程Tomcat
实现效果:在idea中点击run时,自动将代码编译并上传.部署到远程服务器中 和传统的在本地服务器相比较的优势:1.节省开发者开发机的资源,省去了本地服务器的CPU.内存的占用.2.如果开发的程序为A ...
- zoj 3790 Consecutive Blocks 离散化+二分
There are N (1 ≤ N ≤ 105) colored blocks (numbered 1 to N from left to right) which are lined up in ...
- Codevs 3578 无线网络发射器选址== NOIP 2014 Day2 T1
3578 无线网络发射器选址 时间限制: 1 s 空间限制: 64000 KB 题目等级 : 白银 Silver 题目描述 Description 随着智能手机的日益普及,人们对无线网的需求日益增大. ...