本文将在上文对云时代的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(Structs + Spring + Hibernate)组合不同的是,Spring不需要了,Hibernate由其简化版JPA替代,Structs则由Servlet代替,但同时由于Structs只是Servlet的“Fancy”版而已,所以它们之间可以互换。为什么是它们呢?主要有下面这四个原因:
1.能满足基本需求:Servlet提供的Web功能和JPA提供的数据存储功能对于大多数应用而言,能满足它们80%的需求,如果还有其它需求的话,完全可以按照他们自己的想法进行定制,无需被框架所局限。
2.学习成本低:首先,大家都应该知道,Servlet是非常简单易懂的,其次,JPA的核心功能也是易于理解的,虽然其某些功能还是比较复杂的,但是它们并不常用。
3.开发简单:在大多数情况下,Servlet和JPA都可以在Eclipse上通过插件直接进行调试,而且在逻辑上大多不绕弯子,特别是Servlet,基本上能做到“所见即所得”,这对开发而言是非常有帮助的。
4.基于标准:Servlet和JPA都是JCP的标准,这确保其的迁移性,这对应用而言,也是非常重要的。
本篇结束,我知道本篇会产生很多争议,也希望能从大家的评论吸取一些新的见解,所以期待大家的Comments。
本文转于: http://www.itleft.com/archives/20.html
分享到:
相关推荐
Java EE 框架整合开发⼊⻔到实战——Spring+Spring MVC+MyBatis(微课版)课后习题答案.pdf
SpringMVC学习(四)——Spring、MyBatis和SpringMVC的整合
java面试——Spring面试专题.zip
java面试——SpringCloud面试专题.zip
这个是http://blog.csdn.net/dawanganban/article/details/9900539博客中java设计模式的源代码。下载前请先看《设计模式——原型模式》一文。
Spring Data JPA系列4——Spring声明式事务处理与多数据源支持.doc
java毕业设计——基于spring boot的音乐播放网站设计与实现(源码+数据库).zip java毕业设计——基于spring boot的音乐播放网站设计与实现(源码+数据库).zip java毕业设计——基于spring boot的音乐播放网站设计与...
SSM框架——Spring+SpringMVC+Mybatis的搭建教程
java毕业设计——基于spring boot的就业信息管理网站设计与实现(源码+数据库).zip java毕业设计——基于spring boot的就业信息管理网站设计与实现(源码+数据库).zip java毕业设计——基于spring boot的就业信息管理...
微信小程序云开发(SpringBoot+node.js项目实战)
java毕业设计——基于spring boot的旅游网站设计与实现(源码+数据库).zip java毕业设计——基于spring boot的旅游网站设计与实现(源码+数据库).zip java毕业设计——基于spring boot的旅游网站设计与实现(源码+...
java毕业设计——基于spring boot的理财管理网站设计与实现(源码+数据库).zip java毕业设计——基于spring boot的理财管理网站设计与实现(源码+数据库).zip java毕业设计——基于spring boot的理财管理网站设计与...
java毕业设计——基于spring boot的在线选房网站设计与实现(源码+数据库).zip java毕业设计——基于spring boot的在线选房网站设计与实现(源码+数据库).zip java毕业设计——基于spring boot的在线选房网站设计与...
编程不良人的SpringCloud笔记和资料,全套 编程不良人的SpringCloud笔记和资料,全套 编程不良人的SpringCloud笔记和资料,全套
java毕业设计——基于spring boot的在线招标网站设计与实现(源码+数据库).zip java毕业设计——基于spring boot的在线招标网站设计与实现(源码+数据库).zip java毕业设计——基于spring boot的在线招标网站设计与...
Spring注解驱动开发第41讲——Spring IOC容器创建源码解析(一)之BeanFactory的创建以及预准备工作(合起来整个过程)
NULL 博文链接:https://teddywang.iteye.com/blog/357901
java毕业设计——基于spring boot的桌面聊天室系统设计与实现(源码+数据库).zip java毕业设计——基于spring boot的桌面聊天室系统设计与实现(源码+数据库).zip java毕业设计——基于spring boot的桌面聊天室系统...
java毕业设计——基于spring boot的疫情数据查看网站设计与实现(源码+数据库).zip java毕业设计——基于spring boot的疫情数据查看网站设计与实现(源码+数据库).zip java毕业设计——基于spring boot的疫情数据查看...