为什么要学Spring

为什么要学Spring?

先来看张图,它记录的是Web框架的发展史。

图片一 Web框架的发展史

还有更多你可能听都没听说的Web框架,详细的框架列表请参见这里。我想你已经眼花缭乱了,从这么多框架中,如何才能挑选出你心仪的框架呢?

主流的几种运行在JVM上的全栈式Web框架(Full Stack Web Framework)有Spring,Grails,Play!,JRuby on Rails,Vaadin等等,它们各自有各自的优缺点。(所谓Full Stack Web框架,是指所有的层无缝衔接,你可以做到Don’t Repeat Yourself(DRY),自上而下的使用一种语言。)

对我们而言,永远没有“最好”的框架,只有最适合自己需求的框架。在考虑一个框架时,你需要考虑的问题通常有这么几个:

  • 我使用的语言和平台支持这个框架吗?
  • 这个框架和其他我正在使用的框架的兼容性怎么样?
  • 学习这个框架的学习曲线是否太陡?
  • 它的开发效率如何?
  • 安全性如何?
  • 方便进行单元测试吗?
  • 这个框架的文档支持怎么样?社区够活跃吗?

对于笔者而言,学习曲线和开发效率是非常重要的,考虑到Spring完全使用Java语言,不需要再学习新的语言,另外Spring同其他框架的兼容性、可扩展性都非常好,更重要的是强大的文档支持和活跃的社区,让我选择Spring作为开发应用的主要框架。Spring未必是性能最卓越的,它的综合评分也不是最高的。但确实能满足我的大部分需求,越深入的学习越是能体会到它的强大,它能帮助我开发出稳定、安全而又简洁易维护的软件出来,所以也便有了这个系列教程。

下面列出Spring的优点

  • 轻量级:相较于EJB容器,Spring采用的IoC容器非常的轻量级,基础版本的Spring框架大约只有2MB。Spring可以让开发者们仅仅使用POJO(Plain Old Java Object,相对于EJB)就能够开发出企业级的应用。这样做的好处是,你不需要使用臃肿庞大的 EJB容器(应用服务器),你只需要轻量的servlet容器(如Tomcat)。尤其在一些开发当中,很稀缺内存和CPU资源时,采用Spring比EJB无论是开发还是部署应用都更节约资源。
  • 控制反转(IOC):Spring使用控制反转技术实现了松耦合。依赖被注入到对象,而不是创建或寻找依赖对象。
  • 面向切面编程(AOP): Spring支持面向切面编程,同时把应用的业务逻辑与系统的服务分离开来。
  • MVC框架:Spring MVC是一个非常好的MVC框架,可以替换其他web框架诸如Struts。
  • 集成性:Spring非常容易和其他的流行框架一起集成开发,这些框架包括:ORM框架,logging框架,JEE, Quartz,以及Struts等表现层框架。
  • 事务管理:Spring强大的事务管理功能,能够处理本地事务(一个数据库)或是全局事务(多个数据,采用JTA)。
  • 模块分离:Spring框架是由模块构成的。虽然已经有太多的包和类了,但它们都按照模块分好类了,你只需要考虑你会用到的模块,而不用理其他的模块。
  • 异常处理:由于Java的JDBC,Hibernate等API中有很多方法抛出的是checked exception,而很多开发者并不能很好的处理异常。Spring提供了统一的API将这些checked exception的异常转换成Spring的unchecked exception。
  • 单元测试:Spring写出来的代码非常容易做单元测试,可以采用依赖注射(Dependency Injection)将测试的数据注射到程序中。

不得不提到,如果你要开发一个大型的Web系统,MVC框架必不可少。Spring MVC作为其中的佼佼者,被大多数系统作为MVC框架,使用它的开发者也是最多的,其搜索热度一直居高不下。此外你也能得到更多的工作机会呢!

图片二 Dice.com统计的工作中需求的框架热度排名

图片三 Google上的搜索频率排名

图片四 Indeed上工作热度排名

还犹豫什么,跟我一起来学Spring吧!

关于本教程的内容安排

本教程先从Spring的核心部分开始,之后将会陆续介绍Spring MVC,Spring Security等主要模块。将用代码示例配以操作截图,来详解主要知识点,所以非常适合初学者。每一课的学习课后都留有习题供读者思考,这些习题相当多的是面试当中经常会出现的面试题,并且将在下一课中会给出习题的答案,所以本教程针对面试也相当有用。由于笔者的水平有限,错误之处还请大家指出,欢迎大家留言,大家共同学习进步。

习题:

  1. 你使用过Spring吗?你用过它的哪些模块和功能?(如果你使用过Spring MVC,请移步下一题。)
  2. 除了Spring MVC,你还知道哪些MVC框架吗?你用过哪些MVC框架?你能比较下它们之间的优缺点吗? 这是开放式问题,欢迎大家畅所欲言。

原文发布于微信公众号 - java一日一条(mjx_java)

原文发表时间:2015-07-13

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏微信公众号:Java团长

Java微服务框架选型(Dubbo 和 Spring Cloud?)

微服务(Microservices)是一种架构风格,一个大型复杂软件应用由一个或多个微服务组成。系统中的各个微服务可被独立部署,各个微服务之间是松耦合的。每个微...

1.1K3
来自专栏Java技术栈

微服务为什么选Spring Cloud?

现如今微服务架构十分流行,而采用微服务构建系统也会带来更清晰的业务划分和可扩展性。同时,支持微服务的技术栈也是多种多样的,本系列文章主要介绍这些技术中的翘楚——...

1464
来自专栏java学习

这些优秀的 Spring Cloud 开源软件,你知道几个?

Spring Cloud是一系列框架的有序集合。它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线...

1232
来自专栏技术/开源

开源的 Restful Api 集成测试工具 Hitchhiker

Hitchhiker 是一款开源的 Restful Api 集成测试工具,你可以在轻松部署到本地,和你的team成员一起管理Api。

1396
来自专栏JackieZheng

Spring实战——无需一行xml配置实现自动化注入

  已经想不起来上一次买技术相关的书是什么时候了,一直以来都习惯性的下载一份电子档看看。显然,如果不是基于强烈的需求或强大的动力鞭策下,大部分的书籍也都只是蜻蜓...

2176
来自专栏牛客网

美团二面面经,Java后台开发

1610
来自专栏编程

为何学习以及如何理解SSH框架?内含Hibernate学习指南

在面试程序员的时候常常会问到,你们为什么要学习框架?这些框架的本质到底是什么?似乎能给出满意回答的人并不多。因为他们都在为了学习而学习,为了工作而学习,而未能真...

2076
来自专栏程序员宝库

从 Spring Cloud 看一个微服务框架的「五脏六腑」

Spring Cloud 是一个基于 Spring Boot 实现的微服务框架,它包含了实现微服务架构所需的各种组件。

1252
来自专栏技术/开源

开源的 Restful Api 集成测试工具 Hitchhiker

Hitchhiker 是一款开源的 Restful Api 集成测试工具,你可以在轻松部署到本地,和你的team成员一起管理Api。 先上图看看: ? ? ? ...

2497
来自专栏JAVA烂猪皮

最近刷爆朋友圈的一道面试题

最近在网上有一道面试题掀起了劲爆的浪潮,好多家公司都模仿提问了这么一道面试题,而且好多人也都在讨论这道面试题要是自己回答的话该怎么回答!这道题也是在个网站上刷爆...

1164

扫码关注云+社区

领取腾讯云代金券