编写
当需要将某些内容写入控制台时,您可以始终使用 JDK 的 System.out
,它会直接写入 JDK 自身的流。另一种推荐的方式是使用 JLine 的 Terminal
并从中获取writer实例。
如果使用目标端点,即消费者,并且不期望返回任何内容,因为 CommandContext
包含对 Terminal
的引用,并且可以从那里访问 writer。
CommandRegistration.builder()
.command("example")
.withTarget()
.consumer(ctx -> {
ctx.getTerminal().writer().println("hi");
ctx.getTerminal().writer().flush();
})
.and()
.build();
如果使用 @Command
,则可以访问 CommandContext
并从中获取 Terminal
。
@Command
public void example(CommandContext ctx) {
ctx.getTerminal().writer().println("hi");
ctx.getTerminal().writer().flush();
}
可以自动装配 Terminal
以访问其 writer。
@Autowired
Terminal terminal;
@ShellMethod
public void example() {
terminal.writer().println("hi");
terminal.writer().flush();
}