2

Spring Boot を使用して Spring Shell を起動することができました。

@SpringBootApplication
public class Main {
    public static void main(String[] args) {
        SpringApplication.run(Main.class);
    }
}

すべての@ShellComponentクラスが検出され、期待どおりにシェルを使用できます。

ここで、Spring Boot なしでシェルを実行したいと思います。次のようになると思います

Shell shell = context.getBean(Shell.class);
shell.run(...);

必要なすべての依存関係を自分で構成するには、どのようなアプローチを取る必要がありますか?

前もって感謝します!

4

3 に答える 3

3

ebottard のリンクから必要な部分を抽出することで (ありがとう!)、最終的に希望どおりにシェルを実行することができました。

@Configuration
@Import({
        SpringShellAutoConfiguration.class,
        JLineShellAutoConfiguration.class,

        JCommanderParameterResolverAutoConfiguration.class,
        StandardAPIAutoConfiguration.class,

        StandardCommandsAutoConfiguration.class,
})
public class SpringShell {

    public static void main(String[] args) throws IOException {
        ApplicationContext context = new AnnotationConfigApplicationContext(SpringShell.class);
        Shell shell = context.getBean(Shell.class);
        shell.run(context.getBean(InputProvider.class));
    }

    @Bean
    @Autowired
    public InputProvider inputProvider(LineReader lineReader, PromptProvider promptProvider) {
        return new InteractiveShellApplicationRunner.JLineInputProvider(lineReader, promptProvider);
    }
}
于 2018-03-26T16:38:07.813 に答える