微信号:sagacity-mac

介绍:MacTalk 开通于2012年末,内容起于 Mac 而不止 Mac,内容覆盖了技术、创业、产品和人文思考.文风有趣,又有一点力量.相关图书《MacTalk·人生元编程》《MacTalk·跨越边界》

Spring Boot 2.0 即将强势来袭

2018-02-27 20:34 池建强

题图:by 国家地理 from Instagram

Java 语言为什么能够长期占据编程兵器排行榜第一名的位置呢?你可以列出很多因素,比如 Java 是工业级别的编程语言,标准、规范,是面向对象编程的代表,Class、Object、Interface、Abstract、Public、Private、Override 等关键词显式清晰,一旦使用就不会混淆,无论是高手还是小球,写出来的代码,只要逻辑正确,差不多都能看明白,适合规模性开发。

另外,由于 Java 的流行和开放性,围绕 Java 语言形成了最为广泛的开发平台,不仅有 Spring 这种巨型开源生态,在 Java 平台之上还衍生出了很多轻量级的编程语言,比如 Scala、Groovy、Clojure 、Kotlin,这些语言都可以运行在 JVM 之上,形成了极具生命力的生态环境。

balabala……等等等等……

但在我看来,Java 能长盛不衰,主要是命好。每当人们觉得 Java 不行了的时候,总会有英雄横刀救美。

最初 Java 开发出来不知道有什么用的时候,发现可以用 Applet 在网页上做动画。后来企业级软件开发时代 JavaEE 大行其道,开源社区 Spring 桃李满天下。等到了移动时代,人们觉得 Java 要完蛋了,Google 拍马救市,收购并开放了 Android 平台,当家语言就是 Java,于是 Java 再次焕发勃勃生机。目前大数据领域,Java 同样是当仁不让的好手。

现在 Spring Framework 那套东西使用了十几年,正当大家被长达几千行的 ApplicationContext 配置文件折磨的死去活来的时候,Spring Boot 诞生了。什么是 Spring Boot?用来简化 Spring 应用程序开发的。

换句话说就是,当你觉得 Java 不好用的时候,我做了个轻量级的 S,让你好好用 Java。等你觉的 S 也不够轻了,我做了个 SB,让你觉得 S 还是挺轻的。

Sprint Boot 提供了一种新的编程范式,让你不用在配置上花费更多的功夫,做到少配置,甚至不配置。Spring 的诞生,为 Java 开发提供了轻量级的编程方式,比如依赖注入、AOP、事务管理等等,但配置一直是重量级的,开始是 XML,后来引入了注解,再后来 Spring 3.0 引入了基于 Java 语言的类型安全的可重构配置方式,以替换 XML。即便如此,开发人员依然没能逃脱配置的魔爪。

Sprint Boot 让开发人员重新认识了 Spring,你可以抛弃构建文件、web.xml、控制器、Web Server(tomcat)等,这些 Sprint Boot 都帮你搞定了,你想运行一个 Web 程序,只需要在命令行执行:

spring run hello.groovy(参考 Spring Boot 的 Hello World 程序)

Java 程序员又一次看到了希望的曙光,因为「我从来不是一个人」!

如今,Spring Boot 即将发布 2.0 版本。

2 月 21 日,Spring Boot 发布了 2.0.0.RC2 版本,根据项目的 Milestones,Spring Boot 2.0.0 正式版本将于 2 月 28 日发布。

Spring Boot 为 Java 程序所引入的关键创新就是将 Servlet 容器嵌入到一个可执行的 jar 包中,这个 jar 包会打包整个应用。Spring Boot 提供了 Tomcat、Undertow 和 Jetty 作为可选的方案。

随着 HTTP/2 的出现,Spring Boot 的里程碑版本已经增加了该协议对 Tomcat 和 Undertow 的支持。在 RC 版本 中, Jetty 也已经支持 HTTP/2,并且通过 Conscrypt 库提供了对原生 TLS 的支持。

这对于 Spring Boot 默认服务器 Tomcat 8.5.x 来说意义重大,如果 libtcnative 库及其依赖项安装在主机操作系统上,则只支持 HTTP/2。

在监控方面,对 Micrometer 的集成有了增强。RabbitMQ、JVM 线程和垃圾收集指标会自动进行 instrument 监控,异步控制器(controller)也会自动添加到监控里。通过集成,对 InfluxDB 服务器也可以进行监控。

在数据方面,能够以更加细粒度的方式自定义 Hibernate 属性。另外,还可以暴露 RedisCacheConfiguration,从而控制 RedisCacheManager。Flyway 和 Liquibase 配置会更加灵活。
同时,新版本也增强了对 GSON 的支持力度。

还有一个广泛关注的变更就是非常流行的 Spring Boot banner —— 也就是启动时的 ASCII 图像,它被开发团队广泛应用于展现自己的应用品牌信息。Spring Boot 2 版本并没有让我们失望,它现在支持动画 GIF,在 SpringOne Platform 2017 上展现过实际的样例。

需要注意的是,新版本中很多配置选项已经被重命名或者移除,开发人员需要相应地更新 application.properties 或 application.yml。spring-boot-properties-migrator 是一个新的模块,用来缓解迁移的痛苦。将其添加到遗留项目的依赖之后,它会分析应用的环境,并且会在启动的时候打印诊断信息,同时临时将属性迁移至新的配置方式。

参考链接:
Spring Boot 2.0 Migration Guide · spring-projects/spring-boot Wiki · GitHub
https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-2.0-Migration-Guide

关于其他特性的详细信息,可以参考最终版本的发布说明。

最后,问题来了,如果你是一个 Java 程序员,会不会立刻投入到 Sprint Boot 2.0.0 的世界中呢。


卖桃者说:

今天推荐一下我司盖瑞小王子「郭蕾」总编维护的公众号「聊聊架构」。

很多开发者和架构师花了大量时间研究知名公司的企业架构,把这些资料当个宝,但拿回家后发现并不是那么回事。究其原因,只能说是参考的架构实践太多,但了解和领悟的架构知识太少。聊聊架构以架构的「道」为基础,希望为读者呈现更多的务实可落地的架构内容。

 
MacTalk 更多文章 reMarkable 电纸书使用体验续篇 金钱可能买不到快乐,但能买到自由 职场上的风险,你可能没关注到 我们为什么要买贵的学习工具? 程序员写作是不是不务正业?
猜您喜欢 设计中的“设计”,一组来自纽约时报的黑白插画 竞争激烈与高回报率并存的IT行业,你敢挑战么? Python项目实战教程:国内就能访问的google搜索引擎 企业管理四大定律,你造吗? 100亿次的挑战:如何实现一个“有把握”的春晚摇一摇系统