本文将在上文对云时代的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》,它显然是关于Java EE中流行的三个框架整合使用的教程。这三个框架分别是Spring、Spring MVC和MyBatis,...
《ProSpring——Spring专业开发指南》是一本深入探讨Spring框架的专业书籍,旨在帮助开发者全面理解和掌握Spring的核心概念、功能及最佳实践。通过阅读本书,你可以深入理解Spring如何为Java应用程序提供强大的依赖...
java毕业设计——基于spring boot的音乐播放网站设计与实现(源码+数据库).zip java毕业设计——基于spring boot的音乐播放网站设计与实现(源码+数据库).zip java毕业设计——基于spring boot的音乐播放网站设计与...
这份"java面试——SpringCloud面试专题.zip"资源很可能包含了关于Spring Cloud的深度面试指南,旨在帮助求职者准备Spring Cloud相关的技术问题。以下是对Spring Cloud关键知识点的详细解析: 1. **Spring Cloud概述...
标题中的“Spring 2.5.6介绍(九)——spring中没介绍的东西”暗示了这篇博客可能探讨的是Spring框架2.5.6版本中一些不常见或未被广泛讨论的功能。Spring是一个广泛使用的Java企业级应用开发框架,它以其依赖注入(DI...
Spring的核心特性包括依赖注入(DI)、面向切面编程(AOP)和容器管理的事务。 2. **依赖注入(DI)** 依赖注入是Spring的核心,它允许开发者通过配置文件或注解来管理对象之间的依赖关系,而不是由代码直接创建...
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的需求,提供全方位的学习材料。 1. **SpringCloud简介** SpringCloud是基于SpringBoot进行快速构建分布式系统的工具集,它利用SpringBoot的开发便利性简化了配置和服务...
java毕业设计——基于spring boot的在线招标网站设计与实现(源码+数据库).zip java毕业设计——基于spring boot的在线招标网站设计与实现(源码+数据库).zip java毕业设计——基于spring boot的在线招标网站设计与...
Spring注解驱动开发第41讲——Spring IOC容器创建源码解析(一)之BeanFactory的创建以及预准备工作(合起来整个过程)
2. **Message Listener Container**:Spring提供了两种类型的消息监听容器——`DefaultMessageListenerContainer`和`SimpleMessageListenerContainer`。它们负责管理消息监听器的生命周期,并自动处理JMS会话和消息...
java毕业设计——基于spring boot的桌面聊天室系统设计与实现(源码+数据库).zip java毕业设计——基于spring boot的桌面聊天室系统设计与实现(源码+数据库).zip java毕业设计——基于spring boot的桌面聊天室系统...
java毕业设计——基于spring boot的疫情数据查看网站设计与实现(源码+数据库).zip java毕业设计——基于spring boot的疫情数据查看网站设计与实现(源码+数据库).zip java毕业设计——基于spring boot的疫情数据查看...
此为很有人气的Gossip的学习笔记,里面深入浅出的讲解了关于spring框架的知识与学习心得,是理解spring的不可多得的好资料。 此资料为html形式,每个知识点单独列为一张html页面,阅读很方便,不需要pdf格式下的阅读...
ssh 框架的基本搭建 , spring struts hibernate整合