好莱坞原则—Spring的IOC容器
IOC容器的概念,之前在学习SSH的时候,就有接触过。但那时候也仅仅是知道这么个概念,认为它非常难理解。事实上并非它难理解,而是我并没有停下来好好对它总结梳理过。
IOC(Inversion of Control)简单介绍:
控制反转”,并非一种技术。而是一种思想。一种主动提供服务的思想。所谓IOC,就是由Spring负责控制对象的生命周期和对象间的关系,与我们传统的在对象内部直接控制背道而驰。
在传统的程序开发中,完毕一个业务逻辑至少须要两个或两个以上的对象协助完毕。通常一个对象要使用另外一个对象。都是直接在对象内部通过new进行创建对象。由程序主动去创建以来对象。
但这就代表着当前的模块和它所依赖的对象紧紧耦合了。可是其实,我们所须要的仅仅是调用依赖对象提供的某项服务而已。可是想想假设有某种方式让这些服务主动送上来满足我们的需求。我们就不用那么费劲了。IOC也就是这么个简单的道理,主动帮忙创建和注入了依赖对象。例如以下图:
传统程序开发: 主动创建对象—>组装对象
IOC容器:生产线—创建和组装对象,client直接获取
IOC容器的思想事实上非常easy, 就是提供某些服务的一个中介机构,全部的资料都先在这个机构中进行登记。告诉别人你是什么?你须要什么?别人才干给你提供服务,而且也把你做为一种服务提供给其它方。
DI(依赖注入):
Spring的Ioc容器主要使用DI方式实现的,不须要主动查找,在系统执行过程中,动态的向某个对象提供它所须要的其它对象。比方说类A须要操作数据库,曾经我们总是在类A中编写代码创建一个Connection对象,有了Spring之后。我们仅仅须要告诉Spring。A须要一个Connection。至于这个Connection对象怎样创建?何时创建的?类A不须要关心,在系统执行时,Spring会在适当的时候制造一个Connection对象。像打针一样,注射到类A中。
依赖注入主要是通过反射机制来实现的,在前两篇博客中已经有介绍。同一时候IOC提供了三种依赖注入的方式,各自是构造方法注入、setter方法注入和接口方法注入。
Spring的IOC容器设计思想就跟好莱坞原则一样:Don't call us, we will Call you! 也就是,你不用找我们,我们会找你!
好莱坞原则—Spring的IOC容器的更多相关文章
- Spring的IoC容器(转)BeanFactory
Spring的IoC容器 Spring读书笔记-----Spring的Bean之Bean的基本概念 加菲猫 Just have a little faith. Spring的IoC容器 (用户持久化类 ...
- Spring框架IOC容器和AOP解析
主要分析点: 一.Spring开源框架的简介 二.Spring下IOC容器和DI(依赖注入Dependency injection) 三.Spring下面向切面编程(AOP)和事务管理配置 一.S ...
- Spring之IOC容器加载初始化的方式
引言 我们知道IOC容器时Spring的核心,可是如果我们要依赖IOC容器对我们的Bean进行管理,那么我们就需要告诉IOC容易他需要管理哪些Bean而且这些Bean有什么要求,这些工作就是通过通过配 ...
- spring框架--IOC容器,依赖注入
思考: 1. 对象创建创建能否写死? 2. 对象创建细节 对象数量 action 多个 [维护成员变量] service 一个 [不需要维护公共变量] dao 一个 [不需要维护 ...
- 在Servlet(或者Filter,或者Listener)中使用spring的IOC容器
web.xml中的加载顺序为:listener > filter > servlet > spring. 其中filter的执行顺序是filter-mapping在web.xml中出 ...
- Spring的IoC容器
Spring是一个轻量级的Java开发框架,其提供的两大基础功能为IoC和AOP,其中IoC为依赖反转(Inversion of Control).IOC容器的基本理念就是"为别人服务&qu ...
- Spring的IOC容器第一辑
一.Spring的IOC容器概述 Spring的IOC的过程也被称为依赖注入(DI),那么对象可以通过构造函数参数,工厂方法的参数或在工厂方法构造或返回的对象实例上设置的属性来定义它们的依赖关系,然后 ...
- SpringMVC系列(十五)Spring MVC与Spring整合时实例被创建两次的解决方案以及Spring 的 IOC 容器和 SpringMVC 的 IOC 容器的关系
一.Spring MVC与Spring整合时实例被创建两次的解决方案 1.问题产生的原因 Spring MVC的配置文件和Spring的配置文件里面都使用了扫描注解<context:compon ...
- spring的Ioc容器与AOP机制
为什么要使用Spring的Ioc容器? 1.首先,spring是一个框架,框架存在的目的就是给我们的编程提供简洁的接口,可以使得我们专注于业务的开发,模块化,代码简洁,修改方便. 通过使用spring ...
随机推荐
- xhprof安装&&使用
听同事说起过一个php性能分析扩展,叫xhprof,近期了解了下. XHProf 是一个轻量级的分层性能測量分析器. 在数据收集阶段.它跟踪调用次数与測量数据,展示程序动态调用的弧线图. 它在报告.后 ...
- 杂项-DB-分布式:HBase
ylbtech-杂项-DB-分布式:HBase HBase是一个分布式的.面向列的开源数据库,该技术来源于 Fay Chang 所撰写的Google论文“Bigtable:一个结构化数据的分布式存储系 ...
- Java基础——StringBuffer和StringBuilder
本节讲述2个字符串容器的区别 StringBuffer和StringBuilder区别: 1.相同点 两者都是容器(可变的字符序列),都可以对字符串进行基本的“增删改查”操作. 2.不同点 Strin ...
- USACO Sabotage, 2014 Mar 破坏阴谋(二分+贪心)
一开始看完这题就有个想法: 只要把大于整个序列平均数的最大连续序列就是最优? 那把整个序列都减掉平均数 在做最大连续字序列和且记录长度? 仔细思考一下并不太对: 当子序列最大但长度较大 也许也比不上删 ...
- SQL Server-聚焦移除Bookmark Lookup、RID Lookup、Key Lookup提高SQL查询性能
前言 前面几节都是讲的基础内容,本节我们讲讲索引性能优化,当对大数据进行处理时首先想到的就是索引,一旦遇到这样的问题则手忙脚乱,各种查资料,为何平常不扎实基本功呢,我们由浅入深,简短的内容,深入的 ...
- Excel基础视频教程在线观看
也许你已经在Excel中完成过上百张财务报表,也许你已利用Excel函数实现过上千次的复杂运算,也许你认为Excel也不过如此,甚至了无新意.但我们平日里无数次重复的得心应手的使用方法只不过是Exce ...
- 博客移至 GitHub
新博客地址: github.com/FatliTalk/blog
- APUE学习笔记7——进程间通信
1 管道 管道一般是一种半双工的进程间通信方式,只能够在具有公共祖先的进程之间使用,比如一个管道由一个进程创建,然后该进程调用fork,之后父.子进程就可以使用该管道. 管道是调用pipe函数创建的. ...
- 使用 Shiro 设计基于用户、角色、权限的通用权限管理系统
一.前言 在大型的信息管理系统中,经常涉及到权限管理系统 下面来个 demo,很多复杂的系统的设计都来自它 代码已经放到github上了,地址:https://github.com/larger5/s ...
- 设置Django关闭Debug后的静态文件路由
Django在Debug模式关闭掉后请求静态文件时,返回404相应码,后台的请求url是"GET /static/css/404.css HTTP/1.1" 404 1217,找不 ...