`
风在你的眼里
  • 浏览: 6819 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Spring控制反转详解

    博客分类:
  • java
阅读更多

提到Spring就不能不说控制反转Ioc//Inversion of Control 
和依赖注射DI//Dependency Injection 
什么叫控制反转呢? 
套用好莱坞的一句名言就是:你呆着别动,到时我会找你。 
什么意思呢?就好比一个皇帝和太监 
有一天皇帝想幸某个美女,于是跟太监说,今夜我要宠幸美女 
皇帝往往不会告诉太监,今晚几点会回宫,会回哪张龙床,他只会告诉太监他要哪位美女 
其它一切都交由太监去安排,到了晚上皇帝回宫时,自然会有美女出现在皇帝的龙床上 
这就是控制反转,而把美女送到皇帝的寝宫里面去就是注射 
太监就是是框架里面的注射控制器类BeanFactory,负责找到美女并送到龙床上去 
整个后宫可以看成是Spring框架,美女就是Spring控制下的
JavaBean 

而传统的模式就是一个饥渴男去找小姐出台 
找领班,帮助给介绍一个云云,于是领班就开始给他张罗 
介绍一个合适的给他,完事后,再把小姐还给领班,下次再来 
这个过程中,领班就是查询上下文Context,领班的一个职能就是给客户找到他们所要的小姐 
这就是lookup()方法,领班手中的小姐名录就是JNDI//Java Naming and Directory Interface 
小姐就是EJB,饥渴男是客户端,青楼是EJB容器 
看到区别了么?饥渴男去找小姐出台很麻烦,不仅得找,用完后还得把小姐给还回去 
而皇帝爽翻了,什么都不用管,交给太监去处理,控制权转移到太监手中去了,而不是皇帝,
必要时候由太监给注射进去就可以了 

看到Spring的美妙了吧,Spring还提供了与多个主流框架的支持 
可以和其它开源框架集成 
呵呵~看了之后感觉真想笑,不过比喻得倒很到位!

分享到:
评论

相关推荐

    spring的控制反转和依赖注入详解

    spring的控制反转和依赖注入详解

    Spring框架控制反转IOC和依赖注入DI详解

    本文介绍了Spring框架中的控制反转IOC和依赖注入DI,欢迎阅读,共同学习,一起进步。 Spring框架基础参考:深入学习Spring基础 文章目录一.入门程序和IOC简介二.IOC-控制反转三.DI-依赖注入四. IOC和DI五.Spring...

    JSP 开发之Spring Security详解

    它提供了一组可以在Spring应用上下文中配置的Bean,充分利用了Spring IoC(依赖注入,也称控制反转)和AOP(面向切面编程)功能,为应用系统提供声明式的安全访问控制功能,减少了为企业系统安全控制编写大量重复...

    JAVA spring 系列案例50个和学习资料

    Spring系列第2篇:控制反转(IoC)与依赖注入(DI)。Spring系列第3篇:Spring容器基本使用及原理。Spring系列第4篇:xml中bean定义详解(-)Spring系列第5篇:创建bean实例这些方式你们都知道?Spring系列第6篇:玩转...

    详解Spring的核心机制依赖注入

    依赖注入(Dependency Injection) = 控制反转(Inversion ofControl,IoC):当某个Java实例(调用者)需另一个Java实例(被调用者)时,在依赖注入模式下,创建被调用者的工作不再由调用者来完成,因此称为 控制反转 ;...

    【SpringBootWeb】-SpringBootWeb框架详解

    Spring框架为开发提供了一系列的解决方案,比如利用控制反转的核心特性,并通过依赖注入实现控制反转来实现管理对象生命周期容器化,利用 SpringBoot基于Spring4.0设计,不仅继承了Spring框架原有的优秀特性,而且还...

    spring struts 融合的三种方式详解

    您肯定已经听说过控制反转(IOC) 设计模式,因为很长一段时间以来一直在流传关于它的信息。如果您在任何功能 中使用过Spring 框架,那么您就知道其原理的作用。在本文中,我利用这一原理把一个Struts 应用程序注入...

    Spring-Reference_zh_CN(Spring中文参考手册)

    2.2. 控制反转(IoC)容器 2.2.1. 更简单的XML配置 2.2.2. 新的bean作用域 2.2.3. 可扩展的XML编写 2.3. 面向切面编程(AOP) 2.3.1. 更加简单的AOP XML配置 2.3.2. 对@AspectJ 切面的支持 2.4. 中间层 2.4.1. 在XML里...

    Spring 2.0 开发参考手册

    2.2. 控制反转(IoC)容器 2.2.1. 更简单的XML配置 2.2.2. 新的bean作用域 2.2.3. 可扩展的XML编写 2.3. 面向切面编程(AOP) 2.3.1. 更加简单的AOP XML配置 2.3.2. 对@AspectJ 切面的支持 2.4. 中间层 2.4.1. ...

    Spring中文帮助文档

    2.2. 控制反转(IoC)容器 2.2.1. 新的bean作用域 2.2.2. 更简单的XML配置 2.2.3. 可扩展的XML编写 2.2.4. Annotation(注解)驱动配置 2.2.5. 在classpath中自动搜索组件 2.3. 面向切面编程(AOP) 2.3.1. 更加...

    spring chm文档

    2.2. 控制反转(IoC)容器 2.2.1. 更简单的XML配置 2.2.2. 新的bean作用域 2.2.3. 可扩展的XML编写 2.3. 面向切面编程(AOP) 2.3.1. 更加简单的AOP XML配置 2.3.2. 对@AspectJ 切面的支持 2.4. 中间层 2.4.1. ...

    Spring API

    2.2. 控制反转(IoC)容器 2.2.1. 新的bean作用域 2.2.2. 更简单的XML配置 2.2.3. 可扩展的XML编写 2.2.4. Annotation(注解)驱动配置 2.2.5. 在classpath中自动搜索组件 2.3. 面向切面编程(AOP) 2.3.1. 更加...

    spring核心架构

    对于sping的核心架构控制反转(依赖注入)的详解并扩展了sping的核心架构,称之为sping and core

    低清版 大型门户网站是这样炼成的.pdf

    6.1.3 spring 2.5拿手戏——控制反转与依赖注入 353 6.1.4 何为“面向切面编程aop” 356 6.1.5 spring 2.5圣经——面向接口编程 358 6.1.6 开始spring 2.5旅程—hello world 359 6.2 spring 2.5核心技术 364 ...

    laravel框架中你所用到的依赖注入详解

    依赖注入就控制反转的一种是实现方式,面向对象的特征的重要体现,那么依赖注入中什么是依赖呢,这点用Java开发的人很多都能理解。笼统的说依赖就是一种联系,变量和实现的联系。有关于依赖注入的理解之前写过,传送...

    Javascript技术栈中的四种依赖注入详解

    作为面向对象编程中实现控制反转(Inversion of Control,下文称IoC)最常见的技术手段之一,依赖注入(Dependency Injection,下文称DI)可谓在OOP编程中大行其道经久不衰。比如在J2EE中,就有大名鼎鼎的执牛耳者...

    Java Web程序设计教程

    11.4.1控制反转 234 11.4.2依赖注入的3种方式 236 11.5beanfactory与applicationcontext 238 11.5.1认识beanfactory 238 11.5.2使用applicationcontext 238 11.6项目实战——spring问候程序 239 本章小结 241...

    JAVA核心知识点整理(有效)

    1. 目录 1. 2. 目录 .........................................................................................................................................................1 JVM ........................

    java面试题,180多页,绝对良心制作,欢迎点评,涵盖各种知识点,排版优美,阅读舒心

    【Spring】spring中的IOC(控制反转)的原理 92 【Spring】什么是AOP 92 【Spring】Spring事务机制 93 声明式事物 93 编程式事务 94 【Spring】Spring声明式事务的五个特性 94 传播性 94 隔离级别 95 只读 96 事务...

    asp.net知识库

    体验.net2.0的优雅(四):Provider、策略、控制反转和依赖注入 泛型最佳实践 asp.net 2.0下嵌套masterpage页的可视化编辑 C# 2.0与泛型 动态调用对象的属性和方法——性能和灵活性兼备的方法 泛型技巧系列:用泛型...

Global site tag (gtag.js) - Google Analytics