好莱坞原则—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 ...
随机推荐
- 易语言VS杀毒软件:基情复燃,转受为攻!
这两天在编程领域里,又发生了一件令人瞩目的事情:以易语言创始人吴涛的一篇檄文<tid=370327">让我们一起来对360误报说不!>为序幕.再次拉开了易语言跟360杀毒软 ...
- Codeforces 456B Fedya and Maths 打表找规律
Description Fedya studies in a gymnasium. Fedya's maths hometask is to calculate the following expre ...
- kentico中的page template的使用
父页面使用自己的template 子页面,也使用自己的template. 然后父页面中需要添加一个place holder. 子页面的继承,选择inherit only master page. 这样 ...
- mahout demo——本质上是基于Hadoop的分步式算法实现,比如多节点的数据合并,数据排序,网路通信的效率,节点宕机重算,数据分步式存储
摘自:http://blog.fens.me/mahout-recommendation-api/ 测试程序:RecommenderTest.java 测试数据集:item.csv 1,101,5.0 ...
- DB-MySQL:MySQL 教程
ylbtech-DB-MySQL:MySQL 教程 1.返回顶部 1. MySQL 教程 MySQL 是最流行的关系型数据库管理系统,在WEB应用方面 MySQL 是最好的RDBMS(Relation ...
- 更改python字符编码以便使用UTF-8的编码url路径
url编码分两种, 一种是unicode, 另一种是gb2312, 今天遇到的一个网站是要将字符编码按照gb2312来编码,用来得到一个先填写blanks后再返回页面的数据,废话少说,需要做的就是先查 ...
- leetcode 系列文章目录
leetcode 系列文章目录 0. 两数之和1. 两数相加 2. 无重复字符的最长子串 3. 寻找两个有序数组的中位数 4. 最长回文子串 5. Z 字形变换 6. 整数反转 7. 字符串转换整数 ...
- POJ 1252 DP
题意:给你6个数.让你求出1~100范围内的数 最优情况下由这六个数加减几步得到. 输出平均值和最大值. 思路: 我就随便写了写,,,感觉自己的思路完全不对. 但是交上去 AC了!!! 我先当减法 不 ...
- php.ini配置文件参数优化
用于生产环境中的PHP需要对其进行优化,让PHP自身发挥更好的性能,除了写好PHP代码,还要配置好php-fpm以及php.ini调优.本文从内存.OPcache.上传.会话以及安全等方面讲解php. ...
- Hua Wei 机试题目二
题目描述:假设1元,5元,10元,50元,100元的人民币若干,实现一个能找到最少张数累计达到一个指定金额方法.如:67元,可分为67个1元钱.也可分为6个10元7个1元,其中最少人民币分法为一张50 ...