文章目录

  • 《Spring 揭秘》读书心得之第一章Spring框架的由来
    • EJB
    • Spring 框架的由来
    • Spring 框架概述
    • Spring 大观园
    • 小结

《Spring 揭秘》读书心得之第一章Spring框架的由来

EJB

EJB(Enterprise Java Bean)规范的目的是简化分布式应用的开发,并在J2EE(Java Enterprise Edition)平台上为各种企业级服务提供最佳实践

但是,这两个目的似乎都没有很好地完成。

原因如下:

  1. 分布式应用更适合大型的企业级项目,可以实现更好的安全性、扩展性。但是也不可避免地带来性能上的缺陷。这种缺陷对于大型应用是值得的,但是对于小型项目却是无法接受的:分布式架构的引入增加了开发和维护的难度,甚至导致项目的失败:
  2. EJB规范暴露出应用绑定到应用服务器、编程模式复杂笨重、应用不易测试等问题,也使得其无法为开发者提供很好的实践体验;

革命势在必行,Spring 就是点燃燎原之火的火种;Spring倡导一切从实际出发,通过基于POJO的轻量级编程模式加速整个应用的快速开发;

Spring 通过IOC和AOP等先进理念,结合对原有J2EE平台各种企业级服务的抽象和适度集成,开启了Java平台上企业级应用开发的新篇章;

技术是发展的,思想是延续的。Spring所展现的理念和软件开发模式值得我们学习;

Spring 框架的由来

J2EE作为一种企业级应用开发平台,其优异表现是我们有目共睹的。但在J2EE平台的一些早期实践中,出现了对J2EE平台所提供的各项服务的滥用,将基于J2EE平台的企业级开发带入了窘境。

如果用在了不合适的场景下,我们就不得不为滥用而付出相应的代价。EJB是使用J2EE平台各项服务的一种方式,但不是唯一的方式。对于分布式系统来说,使用EJB在某些方面确实可以带给我们很大的收益,但并不是所有的J2EE应用都要用于分布式环境。

  1. 继续使用EJB的代价太高:使用EJB,通常也就意味着需要引入拥有EJB Container的应用服务器( J2EE Application Server)的支持,比如BEA的WebLogic或者IBM的WebSphere,而这往往也就意味着高昂的授权费用。
  2. 限制太多:使用EJB使得应用程序的部署和测试都更加困难,复杂的类加载机制、复杂的部署描述符、过长的开发部署周期等,无疑都增加了开发EJB应用程序的难度。
  3. 应用场景有限:只有在分布式的场景中, EJB才会带给我们最大的益处。一旦滥用,要么是开发过程缓慢,无法如期交付;要么就是程序交付后性能极差,很难满足客户需求。

当人们意识到大部分J2EE应用开发初期甚至整个生命周期内都不需要牵扯到分布式架构时, J2EE平台上对应EJB而生的“轻骑兵”自然也该千呼万唤始出来了——倡导轻量级应用解决方案的Spring,就承担了这一历史角色!

Spring是一个轻量级的Java开发框架,它的最初目的主要是为了简化Java EE的企业级应用开发

没有任何一种解决方案是普遍适用的,只有适用于特定场景的解决方案,脱离具体场景来讨论任何解决方案都是脱离实际的表现。Spring并不是要替代EJB,而是给出EJB之外的另一种方案而已,甚至于二者可以是互补的

Spring 框架概述

Spring框架就好像那包裹地球的大气层一样,为构筑应用的POJO提供了各种服务,进而创造了一套适宜用POJO进行轻量级开发的环境。不管Spring框架自发布到现在经过了多少次的版本更迭,其本质是始终不变的,都是为了提供各种服务,以帮助我们简化基于POJO的Java应用程序开发组成整个Spring框架的各种服务实现被划分到了多个相互独立却又相互依赖的模块当中。抓住了这副骨架,也就抓住了Spring框架的学习主线。

Spring为我们提供了一个IoC容器( IoC Container)实现,用于帮助我们以依赖注入的方式管理对象之间的依赖关系;

在IoC之上是AOP模块。该模块提供了一个轻便但功能强大的AOP框架,让我们可以以AOP的形式增强各POJO的能力,进而补足OOP/OOSD之缺憾。Spring的AOP框架符合AOP Alliance规范,采用Proxy模式构建,与IoC容器相结合,可以充分显示出Spring AOP的强大威力。

Spring框架在Core核心模块和AOP模块的基础上,为我们提供了完备的数据访问和事务管理的抽象和集成服务。Spring框架中的事务管理抽象层是Spring AOP的最佳实践,它直接构建在Spring AOP的基础之上,为我们提供了编程式事务管理和声明式事务管理的完备支持。

Spring框架提供了一套自己的Web MVC框架,职责分明的角色划分让这套框架看起来十分地“醒目”。

理论上来说,上层的模块需要依赖下层的模块才能正常工作,这就是为什么说这些模块是相互依赖的。

不要只将Spring看作是一个IoC容器,也不要只将Spring与AOP挂钩, Spring提供的远比这些东西要多得多。它不但是一个简化J2EE应用开发的轻量级框架,更应该是简化任何Java应用开发的开发框架;

Spring 大观园

Spring大观园中有一棵参天大树,它得以茁壮成长,主要因为它有一个好的根基,那就是Spring;这颗“大树”枝繁叶茂,涉及数据访问、应用安全、Web框架、批处理、微服务等各个方面;

小结

这就是Spring的魅力:基于IoC和AOP的编程理念,提供基础服务,统一编程模式,简化应用开发;不但是一款很好用的工具,还是一款值得学习和欣赏的“艺术品”;

有些代码,又臭又烂,让人索然无味;而有些代码,则沁人心脾,让人叹为观止;Spring 无疑是后者;

Spring 揭秘之Spring框架的由来相关推荐

  1. Spring 揭秘之Spring AOP一世(2)织入实现

    文章目录 Spring AOP一世 Spring AOP的织入 与ProxyFactory打交道 基于接口的代理 基于类的代理 Introduction的织入 ProxyFactory的本质 容器中的 ...

  2. spring揭秘_被问到了! Spring 和 Spring Boot 之间到底有啥区别?

    相信很多小伙伴和我一样,常用Spring 和Spring Boot 但是就是没有研究二者之间到底有什么区别? 今天就来大揭秘 ↓ 概述 对于 Spring和 SpringBoot到底有什么区别,我听到 ...

  3. 《Spring揭秘》读书笔记 2:Spring AOP

    7 一起来看AOP 2009年8月,<一起来看流星雨>开播. 2009年9月,<Spring揭秘>出版. 7.1 AOP核心概念 AOP AOP全称为Aspect-Orient ...

  4. 《Spring揭秘》读书笔记 1:IoC容器

    1 Spring框架的由来 Spring框架的本质:提供各种服务,以帮助我们简化基于POJO的Java应用程序开发. 各种服务实现被划分到了多个相互独立却又相互依赖的模块当中: Core核心模块:Io ...

  5. spring 全局变量_[Spring]-Spring框架-02-IOC容器

    Spring框架 IOC容器 理解IOC容器和DI依赖注入 IOC容器 Inverser Of Control反转控制 就是把原来在程序中创建HelloService对象的控制权限交给Spring管理 ...

  6. 蚂蚁金服开源增强版 Spring Boot 的研发框架!

    点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! 来源:gitee.com/sofastack/sofa-b ...

  7. 蚂蚁金服开源增强版Spring Boot 的研发框架!

    点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! SOFABoot 是蚂蚁金服开源的基于 Spring Bo ...

  8. Spring:一个Java框架15年的演化

    作者:刘欣 来自:码农翻身(ID:coderising) 这篇文章来自于Spring创始人之一Juergen Hoeller在2018年的一次演讲(点击阅读原文查看),我觉得很有意思,又加了点儿料呈现 ...

  9. spring学习12 -Spring 框架模块以及面试常见问题注解等

    以下为spring常见面试问题: 1.Spring 框架中都用到了哪些设计模式? Spring框架中使用到了大量的设计模式,下面列举了比较有代表性的: 代理模式-在AOP和remoting中被用的比较 ...

  10. Spring Boot(Spring的自动整合框架)

    2019独角兽企业重金招聘Python工程师标准>>> Spring Boot 是一套基于Spring框架的微服务框架,由于Spring是一个轻量级的企业开发框架,主要功能就是用于整 ...

最新文章

  1. c# 对文件流的读写
  2. Python pygame
  3. 学习《Hardware-Efficient Bilateral Filtering for Stereo Matching》一文笔记。
  4. php关键词分词搜索 最多匹配的排在最前面_图解 | 通用搜索引擎背后的技术点...
  5. utf8 and unicode
  6. 03-类与对象——课后动手动脑
  7. 【渝粤教育】广东开放大学 大学英语1 形成性考核 (43)
  8. 谁说发 paper 一定要追快打新?2021年,研究 word2vec 也能中顶会!
  9. 助力APP尽情“撒币”!阿里云正式上线移动直播问答解决方案
  10. 【tfcoreml】tensorflow向CoreML模型的转换工具封装
  11. [HDU]1723Distribute Message
  12. 2019年保研夏令营复试经验分享(浙大软件/南大软件/南航计算机)
  13. 2018药品目录匹配_本位码_众联社本位码匹配工具2018版破解版
  14. 数据分析:逻辑树分析模型
  15. 如何判断数字华容道中随机排列的数字阵列是否有解
  16. 【FPGA混沌】基于FPGA的混沌系统verilog实现
  17. 《这个历史挺靠谱·上·袁腾飞讲中国史》读后感
  18. 一定要时常清理QQ的七个文件夹(时间长占内存超大!)
  19. 字符串分割(split),将字符串按照指定字符进行分割。split(String regex)和split(String regex, int limit)
  20. 后版权时代,网易云用IPO开启进击之路

热门文章

  1. UE4 视差毛发材质
  2. unity 解决乱码_解决unity3d读写中文乱码
  3. 使用MCT6.0工具和fontconver制作MTK字库文件
  4. delphi 2010 mysql_Delphi 2010和MySQL
  5. C语言入门学习(入门级C语言)
  6. 2019电子设计大赛:纸张计数显示装置
  7. [Windows 故障]Ping通却无法连接网页 + Apple Mobile Device 自动停止
  8. JavaScript高级程序设计(第四版) 第二章 HTML中的javascript
  9. 俞敏洪:把眼前的做好,一切就都好了
  10. 专业模拟飞行11 linux,飞行模拟器 FlightGear 2019.1,Ubuntu PPA安装