文章目录

  • 《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框架的学习主线。

springmvc分布式 spring分布式框架_springmvc分布式

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 无疑是后者;