【ArchSummit架构师峰会】探讨数据与人工智能相互驱动的关系>>> 了解详情
写点什么

Spring Boot 1.3 发布,包含 DevTools 和 ASCII Art 特性

  • 2015-12-09
  • 本文字数:4256 字

    阅读完需:约 14 分钟

Spring 的管理者 Pivotal 公司发布了Spring Boot 1.3 ,它为Java 类/Spring 配置新增了热重载功能(使用了一个新的 spring-boot-devtools 模块)、缓存自动配置(支持 EhCache、Hazelcast、Infinispan、JCache、Redis 和 Guava),并且还能为 Linux/Unix 提供完全可执行的归档文件。这个版本的发布说明详细描述了这些变化。

一个非常有意思的特性就是在banner.txt 中可以包含彩色的ANSI 编码。这样当应用启动的时候,就能在你的控制台上展现艺术化的信息了。例如:

或者参见最新释放的JHipster:

如果你希望通过这个特性发挥一下创造性的话,Craig Burke 为Spring Boot 创建了一个图片到ascii-art 的转换器

InfoQ 邀请到了 Spring Boot 团队中的主要贡献者 Dr. Dave Syer、Phillip Webb、Stéphane Nicoll、Andy Wilkinson 和 Josh Long,针对这个发布版本,举行了一个 Q&A 交流。

InfoQ:看起来,Spring Boot 是一个很流行的项目。对于 Java 社区对它的反应,你们应该感到很开心吧?

Spring Boot 团队:非常开心!我们认为有两个原因推动了 Spring Boot 的流行。第一个原因是 Java 8 在一定程度上触发了 Java 的重新崛起。与 Java 7 相比,使用 Java 8 编码要有趣得多!第二个原因在于 Spring Boot 构建在一个巨大的基础之上。Spring 生态系统很大,许多人可能没有太多的时间了解每个不同的项目。通过快速上手和简单尝试,我们能够让您着重体验到那些原本会忽略掉的特性。关于这一点,我们有一个很好的例子,就是 Spring Data + Hibernate + 内存 DB。通过移除所有显式的配置,能够非常容易地展现 Spring Data Repository 的真正威力。您能够实现动态语言级别的生产率,同时还能具备 JVM 的类型安全、并发、稳定性以及性能。

InfoQ:在 Spring Boot 1.3 中,你最喜欢的特性是什么?

Spring Boot 团队: 在内部,我们曾经开玩笑说,我们花了八个月的时间开发 devtools、缓存、metrics 以及更加自动化的配置等特性,但是人们最喜欢的是——彩色的 banner!可能最独特的特性,也是在其他地方我们所没有见过的就是完全可执行的 JAR。通过简单地输入“ln -s”就能创建 unix 服务也是非常棒的。

InfoQ:这次看起来是一个很大的发布版本,为什么不将其称为 2.0 呢?

Spring Boot 团队:Spring Framework 在版本号方面上是非常保守的,在十多年的发展后,它的版本号才是 4。我们想延续这一传统,同时也想说明,对于大多数人来说,这次的升级不会带来很多的痛苦。当 Spring 5.0 出来之后,我们将会发布 2.0 版本,同时,它的最低需求是 Java 8.

InfoQ:你们有没有计划减少 Spring Boot 应用所占用的内存?

Spring Boot 团队:针对 Spring 应用所报告的内存,有时候会有一定的误导性。我们过去曾经见过误报的报告,实际上是内部缓存在消耗内存,并且它们还没有被 GC。例如在 Spring Boot 仓库中的 Freemarker 样例应用,在 Java 8 下使用 -Xmx32MB 配置就能运行得很好(当然,它确实还使用了一些非堆内存)。在 Spring Framework 中,对缓存逻辑的优化最近确实也在进行,并且还有计划对其进行重新考虑。读者所共享的所有消耗大量内存的样例应用都会为我们提供帮助。

InfoQ:在云环境中(如 AWS、Cloud Foundry、Heroku),组织(部署、监控、替换)Spring Boot 微服务流程的最佳方式是什么?

Spring Boot 团队:Spring Boot 在各个地方都运行得非常好,包括 Heroku、OpenShift、Google Cloud、Oracle Cloud、Azure 等等,关于如何在这些平台上运行 Spring Boot(以及通常常见的 Spring Cloud)应用都有公开的博客文章和访谈。在 Spring Boot 的参考手册中,我们甚至编写了针对几个大型云平台的操作步骤。如果你试图组织自己的流程和平台(最好不要这样做),那么你会发现我们已经在 http://spring.io/guides 上提供了将 Docker 和 Spring Boot 集成在一起的指南。

对于大多数人来说,我们强烈认为 Cloud Foundry 是具有极大优势的,只需简单地执行cf push -p foo.jar foo,你的工作就完事了。Spring Cloud 团队已经将 Netflix OSS 和 Pivotal Cloud Foundry 集成在了一起,这也是非常棒的。

InfoQ:你们觉得 Java 9 或 Java 8 中有什么特性能够帮助到 Spring Boot 吗?

Spring Boot 团队:按照 JDK 9 的最终形态,它可能会成为模块化 Spring 应用的基础。Spring Framework 5 将会尽其所能允许应用基于 JDK 9 开发……而 Spring Boot 2 也会如此,尤其是统一基于模块路径(modulepath)启动 JVM,完全避免以前的 classpath。

对 Java EE 8 来说,我们看到 HTTP/2 引起了大家广泛的兴趣。在 Spring Boot 中,虽然现在已经可以使用 HTTP/2 了(Jetty 和 Undertow 已经对其提供了支持),但是 Servlet 4.0 对它的官方支持依然值得期待。其他的 Java EE 8 规范也会根据需求提供支持。我们认为对 JMS 2.1 会有很强烈的需求。Spring Boot 已经提供了对 JCache 1.0 的支持,Spring Framework 也已经支持 Hibernate 5.0 了。我们还需要对 Spring Boot 做些工作,才能使其完全支持 Hibernate 5.0,这有望在 1.4 版本中实现。

InfoQ:你们能给刚刚接触 Spring Boot 的初学者推荐一些视频吗?

Spring Boot 团队:Brian Clozel 和 Stéphane Nicoll 最近做了一个 Devoxx 访谈现在已经上线了。这个访谈比大多数的会议录像要长得多,因此能够涉及更多的细节。在 2014 年,Phil Webb 曾经对 Josh Long 做个一个很有意思的访谈,它能够帮助你大致掌握 Spring Boot 的特性,Josh 还曾经做过一个很棒的个人演讲,它位于 vimeo 网站上,更加关注的是微服务的主题。

InfoQ:对于 Spring Boot 的高级用户,你们有什么要推荐的视频吗?

Spring Boot 团队:Nicholas Frankel 的 Spring Boot for DevOps 上有很多有用的信息,涵盖了高级用户可能会感兴趣的一些扩展点。除此之外,我推荐看一些关于 Spring Cloud 的讨论。Dave Syer 和 Josh Long 有一个很棒的入门访谈,你还应该看一下 Jon Schneider 和 Taylor Wicksell 对 Spring Cloud 和 Netflix 的讨论(这是在今年的 SpringOne2GX 会议上得票最多的讨论之一)。

InfoQ:在 start.spring.io 上,是否收集到了用户选择哪个 starter 的统计数据呢?如果收集到的话,你们有什么可以分享的吗?

Spring Boot 团队:是的,我们收集到了统计数据,并且在最近的一篇博客文章中进行了描述。基于Maven 并且使用jar 作为打包方式的Java 8 工程占据了主导地位。 start.spring.io 每个月平均会生成 50,000 个项目,我们计划推出更多的定期统计数据。

InfoQ:在 Spring Boot 1.3 中,彩色的 banner.txt 是一个很有意思并且很好玩的特性。那么你们有没有计划彩色打印日志,不同的日志级别显示为不同的颜色?

Spring Boot 团队:在 1.3 版本中已经支持根据日志级别改变颜色。在默认控制台日志配置中,我们为不同的级别设置了颜色:INFO 是绿色的,WARN 是黄色的,而 ERROR 是红色的。如果使用 %clr 转换词的话,我们可以改变整行的颜色。大致如下所示:

复制代码
%clr(%d{yyyy-MM-dd HH:mm:ss.SSS} ${LOG_LEVEL_PATTERN:-%5p} ${PID:- } --- [%15.15t] %-40.40logger{39} : %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx})

我们默认没有启用它的原因在于,在一些终端主题中,这会使得日志很难阅读。

InfoQ 还与 Julien Dubois 进行了交流,他是 JHipster 的创立者,JHipster 会使用 AngularJS 和 Spring Boot 来创建项目。Dubois 是 Spring Boot 的长期用户,作为高级用户,我们希望他会有一些独特的视角。

InfoQ:您是什么时候开始使用 Spring Boot 的呢?

Julien Dubois:JHipster 启动的时间要比 Spring Boot 早几个月,我们有一些最初的目标非常类似于当前 Spring Boot 所提供的功能。

在 2013 年的 11 月,我与好友 Josh Long 共进午餐,当时他正在巴黎休假。当我们在星巴克喝咖啡的时候,他向我介绍了 Spring Boot:我马上认识到它能够给 JHipster 带来很大的帮助,Spring Boot 替换了我们自定义的 Spring 代码,这是项目的一个巨大进步。两年后,我可以很高兴地说这是一个正确的决策!

InfoQ:在 Spring Boot 的不同版本间进行升级的时候,您有什么经验吗?

Dubois:升级 Spring Boot 版本通常会耗费一些时间,这是因为我们与它进行了紧密的集成。我们使用了 Spring Boot 所提供的 Maven BOM(Bill Of Materials),所以需要检查对其进行升级时,我们的功能是否能够正常运行:通常这不会有什么问题,但我们有一些第三方依赖,所以可能会出现问题,这需要我们指定依赖的具体版本号。新的 Spring Boot 版本也会提供新的特性,如新的健康检查和自动化配置:在这种情况下,我们的主要任务是与其进行集成,移除完成相同功能的已有代码,我们可能会在此之上添加一个图形化的界面。

一个很好的例子就是 Spring Boot 1.3 所提供的对 Cassandra 的支持,来自 JHipster 的代码也包含在了 Spring Boot 中。显然,我们需要删除掉所有来自 JHipster 的代码并使用 Spring Boot 所提供的代码!对我们来说,这是很好的事情,因为这种技术化的代码显然不应该在 JHipster 的范围内,只有没有更好的解决方案时,我们才会将其添加到我们的项目中。

InfoQ:在 Spring Boot 1.3 中,你最喜欢的特性是什么?

Dubois:在 Spring Boot 1.3 中,有一个属性我非常喜欢,那就是新的 devtools!!!在开发 JHipster 的时候,我们曾经非常艰苦地实现热重载功能:可以看一下我们的 JHipster Loaded 项目,它现在已经消亡了,参见 https://github.com/jhipster/jhipster-loaded 。这涉及了很多的工作,我们为此花费了数周的时间,最终的结果却是依然有很多 bug。新的 Spring Boot devtools 很漂亮地解决了这个问题,并且没有那么多的 bug!对于我们的终端用户来说,整体的体验非常棒,因为他们可以通过 BrowserSync 实现前端更新,同时还能通过 Spring Boot devtools 实现后端更新。这能够带来非常好的体验,所有的内容都能随时自动更新,这使用起来非常棒,对于来自传统 Java 开发环境的人来说,这简直就是一种惊喜。

InfoQ:您有什么特殊的特性希望添加到 Spring Boot 中吗?

Dubois:对我来讲,这是在 Spring 中长期存在的一个问题,那就是我希望有更短的启动时间。Devtools 在开发阶段实现了这一点,但是对于很多云提供商来说,启动时间也是很重要的。例如,有些 Spring bean 可以异步启动:实际上,这也是我们为支持 Liquibase 所采用的手动编码的方式,这使我们的启动时间下降了 40%。当然,它可以更加智能一些,以最佳方式使用所有可用的 CPU 核心。

查看英文原文: Spring Boot 1.3 Released Featuring DevTools and ASCII Art

2015-12-09 18:004259

评论

发布
暂无评论
发现更多内容

元服务助力山东舜和酒店数字化转型,促鸿蒙生态繁荣!

最新动态

HarmonyOS非线性容器特性及使用场景

HarmonyOS开发者

HarmonyOS

实战指南,SpringBoot + Mybatis 如何对接多数据源

华为云开发者联盟

大数据 华为云 华为云开发者联盟 企业号9月PK榜

【AIGC】只要10秒,AI生成IP海报,解放双手!!! | 京东云技术团队

京东科技开发者

人工智能 IP AIGC 企业号9月PK榜

分分钟搞定来源list添加到目标list,据说只要5%的人知道

SoFlu软件机器人

基于Java开发的工作流系统(springboot+activiti源码)

金陵老街

springboot Activit

Petal 出行新人超值百元大礼包,中秋国庆优惠等你领!

最新动态

MySQL到TiDB:Hive Metastore横向扩展之路

vivo互联网技术

大数据 hive 元数据 TiDB 横向扩展

QCN6274 VS QCN9274|QCN9074 VS QCN6122|Exploring the World of Wi-Fi 6E and the Latest Chip Innovations

wallyslilly

QCN9074 QCN6122 qcn9274 qcn6274

CPU性能指标简览

DevOps和数字孪生

仿真建模 CPU性能

软件测试/测试开发丨岗位内推-58同城岗位开放

测试人

软件测试 招聘 校招 岗位内推

英伟达张玮东:NVIDIA核心GPU技术与软件生态助力大模型开发和部署

TRaaS

英伟达 大模型训练

打造香港最安全便捷的银行,众安银行发布首份技术白皮书

ZA技术社区

科技 众安保险 ZA Bank 虚拟银行

质量高的http代理ip需要具备什么特点?

巨量HTTP

代理IP http代理

Mac如何内录系统声音

展初云

录屏 Mac软件

1分钟完成1000万key数据对比

NineData

redis Redis 核心技术与实战 redis 精讲 数据对比 NineData

中秋国庆花式玩法,用低代码DIY假日大屏“Vlog”

华为云开发者联盟

低代码 开发 华为云 华为云开发者联盟 企业号9月PK榜

DxO FilmPack 6 for Mac(胶片模拟效果滤镜软件) 6.15.0完美激活版

mac

图像处理软件 苹果mac Windows软件 DxO FilmPack 6

KubeCon China 2023 | 以开源促进智能世界底座共建,给世界提供更好选择

新消费日报

实用指南:掌握 Node.js 文件复制的最佳实践

Apifox

JavaScript node.js 程序员 后端 教程

【稳定性】秘密武器--功能开关技术 | 京东物流技术团队

京东科技开发者

稳定性 企业号9月PK榜 功能开关

MAC手动修复『已损坏』问题 终端运行命令报错处理

展初云

Mac Mac软件

AI编程助手工具,走过路过别错过

SoFlu软件机器人

徐刚:AIGC时代,人力资源数智化的关键趋势与应对

用友BIP

人力资源 AIGC

关于 TDengine 的论文资料都在这里了,等你来取!

TDengine

时序数据库 国产数据库 ​TDengine

Spring Boot 1.3发布,包含DevTools和ASCII Art特性_Java_Matt Raible_InfoQ精选文章