Spring Shell 2.0M1 发布!

发布 | Eric Bottard | 2017 年 9 月 18 日 | ...

我们很高兴地宣布 Spring Shell 2.x 的第一个里程碑版本!

Spring Shell 2 历时两年打造,是对 Spring Shell 的一次完全重写,利用了更新的组件(如 JLine 3)并应用了更好的模块化。 Spring Shell 2 还在构建时考虑了 Spring Boot,利用了自动配置和其他启动功能。

内部架构现在使用可插拔模型来发现将哪些方法转换为命令、如何将用户输入解析为参数值以及如何处理返回值。 这与 Spring MVC 采用的方法非常相似,并且允许以以前不可能的方式扩展框架。 Spring Shell 的用户通常不会关心这一点,只会处理新的“标准”命令 API 来定义他们的命令。

功能亮点

以下视频中突出显示了一些新功能(请务必全屏运行),但这里有一个更广泛的总结

  • 一个长期要求的功能,现在支持位置参数(甚至可以在某种程度上混合和匹配)
  • 使用标准的 Spring 转换 API 允许重用许多现有的转换器,而 Shell 1 有其自己的专用方法
  • 基于 JLine 3 构建带来了良好的用户体验增强,例如使用 TAB 在完成建议中导航
  • bean 验证 API 集成使命令更具表现力
  • 新的 help 命令比以前更有用,类似于 man 页面的输出
  • 接受集合或数组值的命令参数现在可以指定非默认的参数个数
  • 另一个长期要求的功能,现在支持多行命令
  • 仍然支持启用和禁用命令,现在有了更自然的编程模型,并且能够提供命令当前不可用的原因解释

让我们看看它的实际效果!

下面的短片展示了一些功能,使用了具有以下签名的示例命令

@ShellMethod("Add an item to the current order.")
public String addItem(
 	@ShellOption(help = "the item reference") String item,
 	@ShellOption(help = "unit price") @Min(0) float price,
 	@ShellOption(help = "the number of items to add", defaultValue = "1") @Range(min = 1, max = 15) int qty
 ) { ... }

@ShellMethod("Submit the order for processing.")
public List<?> submitOrder() { ... }

下一步是什么

这只是第一个里程碑,充满了新功能。 在接下来的几周内,我们计划修复一些错误,完成编写全面的参考文档,并重构一些内部结构,从而为 Spring One Platform 带来 2.0.0.RELEASE 版本。

同时,请试用一下并提供反馈!

特别鸣谢

我要感谢 Florent BivilleCamilo Gonzalez,他们通过提供有用的想法和一些宝贵的时间来帮助使这次重写成为现实!

获取 Spring 新闻通讯

通过 Spring 新闻通讯保持联系

订阅

取得领先

VMware 提供培训和认证来加速您的进步。

了解更多

获得支持

Tanzu Spring 在一个简单的订阅中提供 OpenJDK™、Spring 和 Apache Tomcat® 的支持和二进制文件。

了解更多

即将举行的活动

查看 Spring 社区中所有即将举行的活动。

查看全部