本文将在上文对云时代的Java应用进行分析的基础上,来深入剖析Spring的不足,并介绍一种在云时代更适用的编程模式。
Spring的不足
当然Spring框架在设计上有非常多的特色和优越性,特别是与过去的EJB2相比,但是我认为Spring有一个非常大的不足,那就是概念过于抽象,对于熟悉Spring的人都应该知道,Spring最核心概念莫过于IoC(Inversion of control,控制反转)和AOP(Aspect Oriented Programming,面向方面编程)这两个,而且这两个概念在刚推出的时候也非常轰动和创新,但是有一点却不容忽视,那就是其实这两个概念非常抽象,使其非常难以理解,我个人学习了很长时间,才稍微掌握大概,虽然这只是我的个人经历,但是我认为我的智商和学识在Java程序员中决定属于前30%的,那么这样完全有理由可以断定这两个概念对于大多数Java程序员而言过于抽象,而这直接导致在下面这两个问题:首先是学习难度的加大,原因非常简单,那就是抽象的东西都比较难以理解,虽然Spring的确比EJB2简单点;其次是开发难度的加大,因为在运行的流程上,Spring框架会构建很多Proxy(代理),使得整个流程饶了很多弯,不是很直接,所以在写代码的时候,会带来一定的困扰,同时这也将会加大调试方面的难度。
还有一点不足,就是Spring的功能太过于强大,就像“瑞士军刀”那样,从Web、MVC、事务、JDBC、DAO、ORM到Web Service无所不包,虽然方便了部分用户,而且在运行时不会造成很大的开销,但是对于大多数用户而言,其实最多只需要一两个功能,而Spring这样强大的设计有点冗余的感觉。
云时代的编程模式
说是云时代的编程模式,其实只是一种旧有模式的简化而已,它就是Servlet与JPA这一组合,和之前SSH(Struts + Spring + Hibernate)组合不同的是,Spring不需要了,Hibernate由其简化版JPA替代,Struts则由Servlet代替,但同时由于Struts只是Servlet的”Fancy”版而已,所以它们之间可以互换。为什么是它们呢?主要有下面这四个原因:
-
- 能满足基本需求:Servlet提供的Web功能和JPA提供的数据存储功能对于大多数应用而言,能满足它们80%的需求,如果还有其它需求的话,完全可以按照他们自己的想法进行定制,无需被框架所局限。
- 学习成本低:首先,大家都应该知道,Servlet是非常简单易懂的,其次,JPA的核心功能也是易于理解的,虽然其某些功能还是比较复杂的,但是它们并不常用。
- 开发简单:在大多数情况下,Servlet和JPA都可以在Eclipse上通过插件直接进行调试,而且在逻辑上大多不绕弯子,特别是Servlet,基本上能做到“所见即所得”,这对开发而言是非常有帮助的。
- 基于标准:Servlet和JPA都是JCP的标准,这确保其的迁移性,这对应用而言,也是非常重要的。
分享到:
相关推荐
Spring框架的设计理念与设计模式 Spring作为现在最优秀的框架之一已被广泛的使用51CTO也曾经针对Spring框架中的JDBC应用做过 报道。本文将从另外一个视角试图剖析出Spring框架的作者设计Spring框架的骨骼架构...
J2EE.DEVELOPMENT.WITHOUT.EJB(中文),rod johnson作品,学习j2ee及spring不可错过的经典。
pdf 英文.......................................
J2EE.DEVELOPMENT.WITHOUT.EJB,学习j2ee与spring的好书
Spring was originally ...That Spring simplifies development without itself being simple isn’t paradoxical. Tools that simplify work don’t themselves have to be simple to learn. IDEs are a case in point
美河制作.中文版EXPERT.ONE.ON.ONE.J2EE.DEVELOPMENT.WITHOUT.EJB.pdf
譬如说,它的作者Rod Johnson拥有10年编写Java程序的经验,目前是Servlet和JDO 2.0两个JSR专家组的成员;再譬如说,书中着力介绍的Spring、Hibernate、WebWork等都是时下流行的开源框架,IoC、AOP之类都是时下流行的...
美河制作.中文版EXPERT.ONE.ON.ONE.J2EE.DEVELOPMENT.WITHOUT.EJB.pdf 共10个压缩包,比较大
文章目录一、概念和历史二、hellospring三、IOC创建对象的方式四、Spring配置五、set注入–...另外一本书《Expert One-on-One J2EE Development without EJB》,更进一步阐述了在不使用EJB开发JAVA EE企业级应用的一些
J2EE.DEVELOPMENT.WITHOUT.EJB(中文)是学习j2ee和spring的好书。
同年他又推出了一部堪称经典的力作《Expert one-to-one J2EE Development without EJB》,该书在Java世界掀起了轩然大波,不断改变着Java开发者程序设计和开发的思考方式。在该书中,作者根据自己多年丰富的实践经验...
如何针对自己的应用程序找到最简单、最易维护的架构;在不使用EJB的情况下有效地管理事务;如何利用AOP和loC解决企业级软件开发中的常见问题;web层设计,以web层在设计良好的J2EE应用中的地位;...
java ee笔试题 JavaExercise 方便同步 Arch 与 Windows 主要是一些练习代码... 秋招 算法 LeetCode HDU 剑指 Offer 项目 新人邀请 粉丝节 基础 Java 计算机网络 操作系统 数据结构 SQL 笔试 两天一张试卷 春招 ...
中文版expert.one.on.one.j2ee.development.without.ejb
美河制作.中文版EXPERT.ONE.ON.ONE.J2EE.DEVELOPMENT.WITHOUT.EJB.pdf
中文版expert.one.on.one.j2ee.development.without.ejb
中文版expert.one.on.one.j2ee.development.without.ejb
美河制作.中文版EXPERT.ONE.ON.ONE.J2EE.DEVELOPMENT.WITHOUT.EJB.pdf
Spring.Boot.in.Action.2015.12.pdfFor online information and ordering of this and other manning books, please visit www.manning.com.thepublisheroffersdiscountsonthisbookwhenorderedinquantity For more ...
美河制作.中文版EXPERT.ONE.ON.ONE.J2EE.DEVELOPMENT.WITHOUT.EJB.pdf