隆重推出 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 而构建的,它利用了自动配置和其他 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 社区中所有即将举行的活动。

查看全部