SpringShell 2.0 共為我們提供了五個內(nèi)置命令, 如果不想使用, 那么可以禁用內(nèi)置命令. 筆者并不推薦修改SpringSell內(nèi)置命令的默認行為, 但是不妨了解一下.
1. 禁用所有內(nèi)置命令
禁用所有內(nèi)置命令, 可以直接修改maven依賴, 不引入內(nèi)置命令的包即可. 需要注意的是, 這種方式連程序退出命令也會禁用, 只能通過殺進程方式停止應(yīng)用.
<dependency>
<groupId>org.springframework.shell</groupId>
<artifactId>spring-shell-starter</artifactId>
<version>2.0.0.RELEASE</version>
<!-- 不引入任何內(nèi)置命令-->
<exclusions>
<exclusion>
<groupId>org.springframework.shell</groupId>
<artifactId>spring-shell-standard-commands</artifactId>
</exclusion>
</exclusions>
</dependency>
2. 禁用特定內(nèi)置命令
禁用特定的內(nèi)置命令, 可以通過設(shè)置SpringBoot 應(yīng)用啟動參數(shù)來實現(xiàn), 可以寫死在應(yīng)用中, 也可以啟動應(yīng)用時指定. 筆者直接寫死在應(yīng)用中.
2.1 修改應(yīng)用啟動類
@SpringBootApplication
public class SpringShellApplication {
public static void main(String[] args) {
// 指定禁用內(nèi)置命令列表
String[] disableCmds = new String[]{
"--spring.shell.command.clear.enabled=false",
"--spring.shell.command.stacktrace.enabled=false"
};
// 重新拼接啟動參數(shù)
String[] fullArgs = StringUtils.concatenateStringArrays(args, disableCmds);
// 啟動應(yīng)用
SpringApplication.run(SpringShellApplication.class, fullArgs);
}
}
2.2 查看所有內(nèi)置命令
通過help查看內(nèi)置命令, 會發(fā)現(xiàn)內(nèi)置命令缺少了stacktrace 和 clear命令.
shell:>help
AVAILABLE COMMANDS
Built-In Commands
exit, quit: Exit the shell.
help: Display help about available commands.
script: Read and execute commands from a file.
shell:>clear
No command found for 'clear'
shell:>stacktrace
No command found for 'stacktrace'