扒一扒Spring家族的前世今生( 二 )


也许使用注解还是XML是一个长期存在的话题 , 但是无论如何都有道理 。
随着注解的功能增强 , 尤其是Servlet 3.0规范的提出 , Web容器可以脱离web.xml的部署 , 使得Web容器完全可以基于注解开发 , 对于Spring 3.x和Spring 4.x的版本注解功能越来越强大 , 对于XML的依赖越来越少 , 到了4.x的版本后甚至可以完全脱离XML , 因此在Spring中使用注解开发占据了主流的地位 。
与此同时 , Pivotal团队在原有Spring的基础上主要通过注解的方式继续简化了Spring框架的开发 , 它们基于Spring框架开发了Spring Boot , 所以Spring Boot并非是代替Spring框架 , 而是让Spring框架更加容易得到快速的使用 。
Pivotal团队在2014年推出Spring Boot的1.0版本 , 该版本使用了特定的方式来进行配置 , 从而使开发人员不再需要定义样板化的配置 。在2018年3月Spring Boot推出了2.0.0 GA版本 , 该版本是基于Spring 5的 , 并引入其最新的功能 , 能够有效支持Java 9的开发 。
Spring Boot致力于在蓬勃发展的快速应用开发领域(rapid Application development)借助Java EE在企业互联网的强势地位成为业界领导者 , 它也是近年来Java开发最令人感到惊喜的项目之一 。
随着近年来微服务的流行 , 越来越多的企业需要快速的开发 , 而Spring Boot除了以注解为主的开发 , 还有其他的绑定 , 例如 , 对服务器进行了绑定和默认对Spring的最大化配置 , 所以开发者能够尽快进行开发代码、发布和测试自己的项目 。
这符合了现今微服务快速开发、测试和部署的需要 , 于是越来越多的企业选择Spring Boot作为开发的选型 , 进而使得Spring Boot更加兴旺起来 。本书主要就是论述Spring Boot这一令人激动的开发工具 。
Spring Boot的优点
谈到Spring Boot , 就让我们先来了解它的优点 。依据官方的文档 , Spring Boot的优点如下:
创建独立的Spring应用程序;
嵌入的Tomcat、Jetty或者Undertow , 无须部署WAR文件;
允许通过Maven来根据需要获取starter;
尽可能地自动配置Spring;
提供生产就绪型功能 , 如指标、健康检查和外部配置;
绝对没有代码生成 , 对XML没有要求配置 。
这段描述告诉我们 , 首先Spring Boot是一个基于Spring框架搭建起来的应用 , 其次它会嵌入Tomcat、Jetty或者Undertow等服务器 , 并且不需要传统的WAR文件进行部署 , 也就是说搭建Spring Boot项目并不需要单独下载Tomcat等传统的服务器 。
同时提供通过Maven(或者Grandle)依赖的starter , 这些starter可以直接获取开发所需的相关包 , 通过这些starter项目就能以Java Application的形式运行Spring Boot的项目 , 而无须其他服务器配置 。
对于配置 , Spring Boot提供Spring框架的最大自动化配置 , 大量使用自动配置 , 使得开发者对Spring的配置尽量减少 。
此外还提供了一些监测、自动检测的功能和外部配置 , 与此同时没有附加代码和XML的配置要求 。
约定优于配置 , 这是Spring Boot的主导思想 。对于Spring Boot而言 , 大部分情况下存在默认配置 , 你甚至可以在没有任何定义的情况下使用Spring框架 , 如果需要自定义也只需要在配置文件配置一些属性便可以 , 十分便捷 。
而对于部署这些项目必需的功能 , Spring Boot提供starter的依赖 , 例如 , spring-boot-starter-web捆绑了Spring MVC所依赖的包 , spring-boot-starter-tomcat绑定了内嵌的Tomcat , 这样使得开发者能够尽可能快地搭建开发环境 , 快速进行开发和部署 , 这就是Spring Boot的特色 。也许作为传统开发者的你 , 还未能理解其意义 , 但这并不要紧 。
为了展示Spring Boot的特色 , 下节将分别展示传统Spring MVC项目和简易的Spring Boot入门实例 , 并进行比较 。
传统Spring MVC和Spring Boot的对比
在传统的Spring MVC项目开发中 , 开发一个简易的Spring MVC项目 , 需要配置DispatcherServlet , 也需要配置Spring IoC的容器 。你可以选择使用web.xml的配置来实现 , 当然 , 如果你使用的是Servlet 3.1规范 , 也可以继承由Spring MVC提供的AbstractAnnotationConfigDispatcherServletInitializer来配置Spring MVC项目 。


推荐阅读