java - 从 Spring-Shell 中删除命令

标签 java spring spring-shell

我正在寻找使用 Spring-Shell 为技术支持团队构建一个诊断实用程序。这个想法是将可执行的 jar 放到系统上,运行应用程序并让它通过一系列诊断。

我想禁用/删除一些从 org.springframework.shell.commands 包自动加载的命令,但我不太清楚如何做到这一点。可能吗?

如果做不到这一点,我只想自定义帮助命令,以便我可以输出自己的帮助。我什至无法让它工作,尽管我能够弄清楚如何从用户点击 TAB 时显示的命令列表中删除它们。

@CliAvailabilityIndicator({"!", "//", "script","system"})
public boolean isAvailable()
{
    return false;
}

有什么想法吗?

最佳答案

事实证明,根据http://docs.spring.io/spring-shell/docs/current/reference/htmlsingle/#d4e173 ,可以使用命令行参数调用 spring shell 应用程序以禁用内部命令。所以我所做的是在我的应用程序的主要方法中我自己添加参数。

public static void main(String[] args) throws IOException
{
    ArrayList<String> argsList = new ArrayList<String>(Arrays.asList(args));
    argsList.add("--disableInternalCommands");
    String[] argsArray = new String[argsList.size()];
    argsArray = argsList.toArray(argsArray);
    Bootstrap.main(argsArray);
}

可能有一种更简洁的方法将参数添加到 args 参数...但这超出了这个问题的范围。

关于java - 从 Spring-Shell 中删除命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29948898/

相关文章:

java - 显示位置消息和发件人的 "null"

java - Spring shell 彩色输出

spring - 无法在 Web 应用程序(tomcat、Spring MVC)中找到 witten 文件

java - Windows 操作系统命令不在 Spring Shell 中执行

java - 在 Activity 之间传递解析 GeoPoint

java - 升级 Cloudera 的 java 版本有多安全?

java - 如何在 Java 中重命名文件?

java - Jettison 或 Kryo

java - 我可以使用 spring DI 将 session 属性注入(inject)到我的 web 应用程序的 POJO 中吗