0

Spring Shell を Spring Boot アプリケーションに統合したいと考えています。公式のgit-repoから例を実行できます。しかし、サンプル コードを、このコードに非常によく似た自分のプロジェクトに移行すると、個々のシェルが表示されないか、使用できなくなります。代わりに、デフォルトの 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 でコードを実行していません。

ドキュメント(第 3.5 章) には記載されていますが、私が理解している限り、コンポーネントは自動的に収集されます。

したがって、私の質問は多かれ少なかれ、これよりも優れた使用方法を設定する方法です:

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

そして、デフォルトのスプラッシュを倒すために!

4

2 に答える 2

1

ドキュメントのそのコメントは少し誤解を招きます (変更します)。コンポーネントをピックアップするには、それらがクラスパス上にある必要があり、何らかの方法でスキャンする必要があります。

たとえば、Spring XD プロジェクトorg.springframework.xd.shellでパッケージのスキャンがどのように行われるかを参照してください。独自のパッケージに対して同様のことを行う必要があります。

于 2015-06-07T09:26:39.297 に答える
0

解決:

ebottard の回答により、「spring-shell-plugin.xml」を .xml の下に作成することになりましたresources\META-INF\spring\..。コンポーネントスキャンはすでに外部で設定されていますが、これは必要なようです。次のコードは、が実装されている Spring Boot アプリケーション内で起動する方法を示していますCommandLineRunner。これにより、開始の問題が解決されるはずです。

@Component
public class CLIBean implements CommandLineRunner {

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

}
于 2015-06-08T20:25:56.380 に答える