Spring Boot实战
上QQ阅读APP看书,第一时间看更新

前言

在1964年的纽约世界博览会上,沃特·迪士尼向世界介绍了三件有开创意义的东西:“小小世界”(it's a small world)、“与林肯先生共度的伟大时刻”(Great Moments with Mr. Lincoln)以及“文明演进之旋转木马”(Carousel of Progress)。关于这届世博会里迪士尼相关的信息,详见http://www.dwz.cn/2Hrvyh中的Disney influence部分。——译者注所有这三样东西随后都搬进了迪士尼乐园和迪士尼世界,你今天仍能看见它们。

其中,我最喜欢的是“文明演进之旋转木马”,这大约也是沃特·迪士尼的最爱之一。这既是骑行,又是舞台表演,座位区域围绕着中心区域旋转,上演四场表演,讲述了一个家庭在20世纪不同时代(分别是20世纪初、20世纪20年代、20世纪40年代和近年)的故事,突出了不同年代技术的进步。从手摇洗衣机,到电灯和收音机,到自动洗碗机和电视,再到电脑和声控家电,无一不在述说着创新的故事。关于这个游乐设施,详见http://www.yesterland.com/progress.html的介绍。——译者注

在每幕表演中,父亲(也是演出的叙述者)都会讲述最新的发明,并带上一句“这玩意儿不能更好了”,到头来却发现随着技术的进步,它的确变得更好了。

比起这场舞台演出,Spring的历史要短得多。但是对于Spring,我的感受和“演进老爹”(Progress Dad)对20世纪的体会相似。似乎每个Spring应用程序都让开发者的生活更上一个台阶,仅从Spring组件的声明和织入方式就能看出端倪。让我们来看看Spring历史中的一些演化历程。

❑ Spring 1.0的出现彻底改变了我们开发企业级Java应用程序的方式。Spring的依赖注入与声明式事务意味着组件之间再也不存在紧耦合,再也不用重量级的EJB了。这玩意儿不能更好了。

❑ 到了Spring 2.0,我们可以在配置里使用自定义的XML命名空间,更小、更简单易懂的配置文件让Spring本身更便于使用。这玩意儿不能更好了。

❑ Spring 2.5让我们有了更优雅的面向注解的依赖注入模型(即@Component和@Autowired注解),以及面向注解的Spring MVC编程模型。不用再去显式地声明应用程序组件了,也不再需要去继承某个基础的控制器类了。这玩意儿不能更好了。

❑ 到了Spring 3.0,我们有了一套基于Java的全新配置,它能够取代XML。在Spring 3.1里,一系列以@Enable开头的注解进一步完善了这一特性。终于,我们第一次可以写出一个没有任何XML配置的Spring应用程序了。这玩意儿不能更好了。

❑ Spring 4.0对条件化配置提供了支持,根据应用程序的Classpath、环境和其他因素,运行时决策将决定使用哪些配置,忽略哪些配置。那些决策不需要在构建时通过编写脚本确定了;以前会把选好的配置放在部署的包里,现在情况不同了。这玩意儿不能更好了。

现在轮到Spring Boot了。虽然Spring的每个版本都让我们觉得一切都不能更好了,但Spring Boot还是向我们证明了Spring仍然有巨大的潜力。事实上,我相信Spring Boot是长久以来Java开发历程里最意义深刻、激动人心的东西。

以历代Spring Framework的进步为基础,Spring Boot实现了自动配置,这让Spring能够智能探测正在构建何种应用程序,自动配置必要的组件以满足应用程序的需要。对于那些常见的配置场景,不再需要显式地编写配置了,Spring会替你料理好一切。

选择在构建时和运行时要包含在应用程序里的库,往往要花费不少工夫,而Spring Boot的起步依赖(starter dependency)将常用依赖聚合在一起,借此简化一切。它不仅简化了你的构建说明,还让你不必苦思冥想特定库和版本。

针对使用Groovy来开发Spring应用程序,Spring Boot的命令行界面提供了一个令人瞩目的选项,它将Java应用程序开发过程中的噪声降到最低,开发方式平易近人。有了Spring Boot CLI,就不再需要访问方法了,不再需要诸如public与private之类的访问修饰符,也不再需要分号或者return关键字。在许多场景中,import语句都可以去掉。因为你是在命令行里以脚本方式运行应用程序,所以连构建说明都能免了。

Spring Boot的Actuator让你能一窥应用程序运行时的内部工作细节,看看Spring应用程序上下文里都有哪些Bean, Spring MVC控制器是怎么与路径映射的,应用程序都能取到哪些配置属性,诸如此类。

Spring Boot为我们带来了这么多奇妙的特性,这玩意儿当然不能更好了!

本书中你将看到,Spring Boot着实让Spring比以前更好了。我们将一同去了解自动配置、Spring Boot起步依赖、Spring Boot CLI和Actuator。我们还会去摆弄一下Grails的最新版本,它就是基于Spring Boot的。临近末尾,你也许会觉得Spring不可能更好了。

如果说迪士尼的“文明演进之旋转木马”告诉了我们什么事情,那就是当我们觉得什么东西不可能更好了的时候,它一定会变得更好。Spring Boot的进步正在带来越来越大的益处。真的难以想象Spring还能变得更好,但它肯定会更好。毫无疑问,Spring的前景总是美好的。