`
moshowgame
  • 浏览: 42526 次
  • 性别: Icon_minigender_1
  • 来自: 潮州
社区版块
存档分类
最新评论

<转>【牛人对spring的比喻,很到位很趣味很好理解】

阅读更多



 大名鼎鼎的Spring框架
有人曾说2005年一片叫春之声,指的就是该框架
Spring起源于Rod Johnson的《Expert One-on-One J2EE Design and Development》一书
Rod Johnson认为,J2ee里面的那一套//尤其是ejb
太重了,对于单机的系统来说,没有必要使用那么复杂的东西
于是就开始设计并引导Spring小组开发出这样一个构架
不能不说他是个天才,因为的的确确不是所有的系统都是跨多服务器的
没有必要把一个简单的系统设计得那么复杂//天才的那几个共性又体现出来了
Spring从诞生之日起就是针对EJB的,力争在不少应用上取代EJB
而它也确实达到了这个目的
现在包括WebLogic等主流应用服务器还有主流IDE都开始逐渐接受该框架
并提供相应支持
提到Spring就不能不说控制反转Ioc//Inversion of Control
和依赖注射DI//Dependency Injection
什么叫控制反转呢?
套用好莱坞的一句名言就是:你呆着别动,到时我会找你。
什么意思呢?就好比一个皇帝和太监
有一天皇帝想幸某个美女,于是跟太监说,今夜我要宠幸美女
皇帝往往不会告诉太监,今晚几点会回宫,会回哪张龙床,他只会告诉太监他要哪位美女
其它一切都交由太监去安排,到了晚上皇帝回宫时,自然会有美女出现在皇帝的龙床上
这就是控制反转,而把美女送到皇帝的寝宫里面去就是注射
太监就是是框架里面的注射控制器类BeanFactory,负责找到美女并送到龙床上去
整个后宫可以看成是Spring框架,美女就是Spring控制下的JavaBean
而传统的模式就是一个饥渴男去找小姐出台
找领班,帮助给介绍一个云云,于是领班就开始给他张罗
介绍一个合适的给他,完事后,再把小姐还给领班,下次再来
这个过程中,领班就是查询上下文Context,领班的一个职能就是给客户找到他们所要的小姐
这就是lookup()方法,领班手中的小姐名录就是JNDI//Java Naming and Directory Interface
小姐就是EJB,饥渴男是客户端,青楼是EJB容器
看到区别了么?饥渴男去找小姐出台很麻烦,不仅得找,用完后还得把小姐给还回去
而皇帝爽翻了,什么都不用管,交给太监去处理,控制权转移到太监手中去了
而不是皇帝,必要时候由太监给注射进去就可以了
看到Spring的美妙了吧,Spring还提供了与多个主流框架的支持
可以和其它开源框架集成

呵呵~看了之后感觉真想笑,不过比喻得倒很到位!

  • 大小: 223.2 KB
分享到:
评论

相关推荐

    List<Map>转化为List工具类

    一般使用springjdbc、hibernate的sql查询,库获取到的数据都是List&lt;Map&lt;String, Object&gt;&gt;结果集,如果我们要转化为JavaBean,则需要做一系列的map.get(),然后obj.set()。 此工程中就是解决List&lt;Map&lt;String, Object&gt;...

    Spring4 + Hibernate5详细maven构建.docx

    - **Spring版本**: `&lt;spring.version&gt;4.3.11.RELEASE&lt;/spring.version&gt;` 定义了Spring框架的具体版本,这里是Spring 4.3.11.RELEASE。 - **JUnit版本**: `&lt;junit.version&gt;4.12&lt;/junit.version&gt;` 指定了单元测试框架...

    Spring in Action 中文版 第五部分(Spring in Action CN.005)

    Spring in Action CN.001&lt;br&gt;Spring in Action CN.002&lt;br&gt;Spring in Action CN.003&lt;br&gt;Spring in Action CN.004&lt;br&gt;Spring in Action CN.005&lt;br&gt;...Spring in Action CN.BAT&lt;br&gt;&lt;br&gt;Spring in Action 中文版的pdf文件较大...

    spring-ai-core-0.8.1

    spring-ai-core 0.8.1,解决大家使用2023.0.1.0 版本 Spring Cloud Alibaba 依赖,代码依赖下载报错问题,&lt;dependencyManagement&gt; &lt;dependencies&gt; &lt;dependency&gt; &lt;groupId&gt;com.alibaba.cloud&lt;/groupId&gt; ...

    springcloud微服务里的oauth2集成总结.docx

    为了更好地理解Spring Cloud微服务架构中OAuth2的集成过程,首先来了解一下项目的基本组成: 1. **网关服务(Gateway)**:作为整个系统的入口,负责将外部请求路由到相应的微服务。 2. **授权服务(OAuth/UAU)**...

    java8+tomcat8+struts2.5+spring4.3+hibernate5.2框架搭建详细过程

    &lt;spring.version&gt;4.3.0.RELEASE&lt;/spring.version&gt; &lt;hibernate.version&gt;5.2.0.Final&lt;/hibernate.version&gt; &lt;struts2.version&gt;2.5.1&lt;/struts2.version&gt; &lt;jackson.version&gt;2.7.5&lt;/jackson.version&gt; &lt;log4j.version&gt;...

    Spring in Action 中文版 第四部分(Spring in Action CN.004)

    Spring in Action CN.001&lt;br&gt;Spring in Action CN.002&lt;br&gt;Spring in Action CN.003&lt;br&gt;Spring in Action CN.004&lt;br&gt;Spring in Action CN.005&lt;br&gt;...Spring in Action CN.BAT&lt;br&gt;&lt;br&gt;Spring in Action 中文版的pdf文件较大...

    Spring in Action 中文版 第三部分(Spring in Action CN.003)

    Spring in Action CN.001&lt;br&gt;Spring in Action CN.002&lt;br&gt;Spring in Action CN.003&lt;br&gt;Spring in Action CN.004&lt;br&gt;Spring in Action CN.005&lt;br&gt;...Spring in Action CN.BAT&lt;br&gt;&lt;br&gt;Spring in Action 中文版的pdf文件较大...

    Spring in Action 中文版 第七部分(Spring in Action CN.007)

    Spring in Action CN.001&lt;br&gt;Spring in Action CN.002&lt;br&gt;Spring in Action CN.003&lt;br&gt;Spring in Action CN.004&lt;br&gt;Spring in Action CN.005&lt;br&gt;...Spring in Action CN.BAT&lt;br&gt;&lt;br&gt;Spring in Action 中文版的pdf文件较大...

    springmvc4+spring4+mybatis3+spring-security3的环境搭建

    &lt;groupId&gt;org.springframework&lt;/groupId&gt; &lt;artifactId&gt;spring-webmvc&lt;/artifactId&gt; &lt;version&gt;4.3.28.RELEASE&lt;/version&gt; &lt;/dependency&gt; ``` 接下来,我们需要配置Spring 4。Spring是一个全面的企业级应用开发框架...

    spring示例代码好又全.rar

    内容如下:&lt;br&gt;spring.rar [spring_aop1] [spring_aop2]&lt;br&gt;[spring_aop3] [spring_aop4] [spring_autowire_byName]&lt;br&gt;[spring_autowire_byType] [spring_beginning] [spring_hibernate_1]&lt;br&gt;[spring_hibernate_2] ...

    《精通Spring2.X企业应用开发详解》随书源码1-15章

    Spring容器高级主题&lt;br&gt;第6章 Spring AOP基础&lt;br&gt;第7章 基于@AspectJ和Schema的&lt;br&gt;第7章 AOP&lt;br&gt;第3篇 数据库访问&lt;br&gt;第8章 Spring对DAO的支持&lt;br&gt;第9章 Spring的事务管理&lt;br&gt;第10章 使用Spring JDBC访问数据库&lt;br&gt;...

    JSF与Shale开发用包

    aop.jar&lt;br&gt;spring-beans.jar&lt;br&gt;spring-context.jar&lt;br&gt;spring-core.jar&lt;br&gt;spring-dao.jar&lt;br&gt;spring-hibernate.jar&lt;br&gt;spring-jdbc.jar&lt;br&gt;spring-mock.jar&lt;br&gt;spring-orm.jar&lt;br&gt;spring-remoting.jar&lt;br&gt;spring-...

    《精通Spring2.X企业应用开发详解》20-23

    Spring容器高级主题&lt;br&gt;第6章 Spring AOP基础&lt;br&gt;第7章 基于@AspectJ和Schema的&lt;br&gt;第7章 AOP&lt;br&gt;第3篇 数据库访问&lt;br&gt;第8章 Spring对DAO的支持&lt;br&gt;第9章 Spring的事务管理&lt;br&gt;第10章 使用Spring JDBC访问数据库&lt;br&gt;...

    《精通Spring2.X企业应用开发详解》16-19章

    Spring容器高级主题&lt;br&gt;第6章 Spring AOP基础&lt;br&gt;第7章 基于@AspectJ和Schema的&lt;br&gt;第7章 AOP&lt;br&gt;第3篇 数据库访问&lt;br&gt;第8章 Spring对DAO的支持&lt;br&gt;第9章 Spring的事务管理&lt;br&gt;第10章 使用Spring JDBC访问数据库&lt;br&gt;...

    深入SpringBoot(十四):jar-war打包解决方案.docx

    本文档提供了详细的 SpringBoot 项目打包解决方案,包括继承 spring-boot-starter-parent 和不继承 spring-boot-starter-parent 两种情况下的 jar 和 war 打包操作,旨在帮助读者更好地理解 SpringBoot 项目的打包...

    swagger使用文档

    &lt;org.springframework-version&gt;4.1.6.RELEASE&lt;/org.springframework-version&gt; &lt;maven.compiler.encoding&gt;UTF-8&lt;/maven.compiler.encoding&gt; &lt;project.build.sourceEncoding&gt;UTF-8&lt;/project.build.sourceEncoding&gt; ...

    springboot 微服务示例.doc

    ### Spring Boot微服务搭建知识点详解 #### 一、Spring Boot与微服务简介 ...通过对这些知识点的学习,开发者可以更好地理解和掌握微服务架构的设计和实现方法。希望本文能为读者提供有益的参考和启示。

    ssm黑马旅游整合最终版2018

    &lt;artifactId&gt;mybatis-spring&lt;/artifactId&gt; &lt;/dependency&gt; &lt;!-- MySQL驱动 --&gt; &lt;dependency&gt; &lt;groupId&gt;mysql&lt;/groupId&gt; &lt;artifactId&gt;mysql-connector-java&lt;/artifactId&gt; &lt;/dependency&gt; &lt;!-- 日志 --&gt; ...

    SSM三大框架整合详细总结(Spring+SpringMVC+MyBatis).pdf

    &lt;groupId&gt;org.mybatis.spring&lt;/groupId&gt; &lt;artifactId&gt;mybatis-spring&lt;/artifactId&gt; &lt;version&gt;1.2.2&lt;/version&gt; &lt;/dependency&gt; &lt;!-- JDBC驱动 --&gt; &lt;dependency&gt; &lt;groupId&gt;mysql&lt;/groupId&gt; &lt;artifactId&gt;mysql-...

Global site tag (gtag.js) - Google Analytics