10.SpringShell自定义命令提示符

版权声明:转载请注明出处! https://blog.csdn.net/zongf0504/article/details/86671883

SpringShell 应用默认的命令提示符是 Shell:>, Spring 提供了PromptProvider 接口, 可以让我们轻松自定义自己的命令提示符. 这样会让我们的应用看起来更专业. 自定义命令提示符的方式也很简单, 只需自定义PromptProvider 实现类即可.

1. 自定义命令提示符

  • 自定义命令提示符需要注册为spring的组件, 添加@Component修饰即可
  • 自定义提示符需要实现PromptProvider接口, 并实现getPrompt()方法
  • 在getPrompt()方法中,我们可以指定命令提示符的文字, 字体样式, 前景色, 背景色等信息.
/**
 * @Description: 自定义命令提示符样式风格
 * @author: zongf
 * @date: 2019-01-26 08:45
 */
@Component
public class CustomPromptProvider implements PromptProvider {

    @Override
    public AttributedString getPrompt() {

        // 获取主机名称
        String hostName = getHostName();

        // 设置命令提示符文字
        String promot = "spring@" + hostName + "> ";

        // 设置命令提示符字体样式
        AttributedStyle promotStyle = AttributedStyle.BOLD.foreground(AttributedStyle.GREEN);

        // 返回命令提示符
        return new AttributedString(promot, promotStyle);
    }

    /**
     * @Description: 获取主机名称
     * @return: String 主机名称
     * @author: zongf
     * @time: 2019-01-26 08:58:45
     */
    private String getHostName(){
        String hostName = "";
        try {
            InetAddress inetAddress = InetAddress.getLocalHost();
            hostName = inetAddress.getHostName();
        } catch (UnknownHostException e) {
            e.printStackTrace();
        }
        return hostName;
    }
}

2. 启动测试

重新打包后启动应用, 会发现命令提示符已变.

$ ./bin/spring-shell.sh

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::        (v2.1.2.RELEASE)

2019-01-26 10:02:37.709[INFO][main]-Starting SpringShellApplication v0.0.1-SNAPSHOT on zongf-E570 with PID 23568 (/data/idea/learn-spring/spring-shell/target/spring-shell-0.0.1-SNAPSHOT.jar started by zongf in /data/idea/learn-spring/spring-shell/target)
2019-01-26 10:02:37.716[INFO][main]-No active profile set, falling back to default profiles: default
2019-01-26 10:02:39.021[INFO][main]-Started SpringShellApplication in 1.957 seconds (JVM running for 2.426)
spring@zongf-E570> add 2 3
5
spring@zongf-E570>

猜你喜欢

转载自blog.csdn.net/zongf0504/article/details/86671883