Spring Shell - 使用和执行

时间:2015-06-05 22:52:45

标签: java spring spring-boot command-line-interface spring-shell

我想在Spring启动应用程序中集成Spring Shell。我可以执行官方git-repo中的示例。但是,在将示例代码迁移到与this code非常相似的我自己的项目时,我的单个shell不会显示或可用。相反,显示的默认Spring Shell启动是可用的:

<SpringShell ASCII-Art>
1.1.0.RELEASE

Welcome to Spring Shell. For assistance press or type "hint" then hit ENTER
spring-shell>

编译没有错误,但未使用单个样本@component标记的类。所有注释都已正确设置。外部有标准装载机。我没有在IDE中执行代码。

尽管documentation(第3.5章)告诉我,组件会根据我的理解自动收集。

所以我的问题或多或少是如何更好地设置使用率 这个:

public class Main {
    public static void main(String[] args) throws Exception {
        Bootstrap.main(args);
    }
}

打败默认的泼水!

2 个答案:

答案 0 :(得分:1)

文档中的评论有点误导(我会改变它)。 要获取组件,它们需要位于类路径上,您需要以某种方式扫描它们。

例如,请参阅Spring XD project中的org.springframework.xd.shell包的扫描结果。您需要为自己的包做类似的事情。

答案 1 :(得分:0)

解决方案:

ebottard的回答让我在resources\META-INF\spring\..下创建了一个“spring-shell-plugin.xml”。虽然组件扫描已经在外部设置,但这似乎是必要的。以下代码显示了如何在实现CommandLineRunner的Spring Boot应用程序中启动它。这应该弥合出现问题。

@Component
public class CLIBean implements CommandLineRunner {

    @Override
    public void run(String... args) throws Exception {
        Bootstrap bootstrap = new Bootstrap();
        bootstrap.run();
    }

}