此版本仍在开发中,尚未被视为稳定版本。对于最新的稳定版本,请使用 Spring Shell 3.4.0spring-doc.cadn.net.cn

主题

当前的终端实现功能丰富,通常可以显示 其他只是纯文本的东西。例如,可以将文本的样式设置为粗体或具有不同的颜色。终端能够 显示 Unicode 表中的各种字符,如 emoji,这些字符通常是 用于使 shell 输出更漂亮。spring-doc.cadn.net.cn

Spring Shell 通过其主题框架支持这些,该框架包含两个部分。 首先,样式可用于更改文本类型,其次,使用数字 自定义字符的显示方式。然后将这两个部分组合为一个主题spring-doc.cadn.net.cn

有关主题内部的更多详细信息,请参阅 主题。spring-doc.cadn.net.cn

默认主题名为default但可以使用属性spring.shell.theme.name.还有另一个名为dump,它不对颜色使用样式,并尝试不使用任何特殊数字。

您可以通过覆盖默认设置来修改现有样式和插图:spring-doc.cadn.net.cn

static class MyStyleSettings extends StyleSettings {

	@Override
	public String highlight() {
		return super.highlight();
	}
}
static class MyFigureSettings extends FigureSettings {

	@Override
	public String error() {
		return super.error();
	}
}

您还可以通过创建一个ThemeSettings并提供您自己的样式图形实现:spring-doc.cadn.net.cn

static class MyThemeSettings extends ThemeSettings {

	@Override
	public StyleSettings styles() {
		return new MyStyleSettings();
	}

	@Override
	public FigureSettings figures() {
		return new MyFigureSettings();
	}
}

注册新 BeanTheme您可以在此处返回自定义ThemeSettings主题名称。spring-doc.cadn.net.cn

@Configuration
static class CustomThemeConfig {

	@Bean
	Theme myTheme() {
		return new Theme() {
			@Override
			public String getName() {
				return "mytheme";
			}

			@Override
			public ThemeSettings getSettings() {
				return new MyThemeSettings();
			}
		};
	}
}

您可以使用ThemeResolver解析样式(如果要创建 JLine 样式的字符串,如果需要,还可以进行 主题人物更漂亮。spring-doc.cadn.net.cn

@Autowired
private ThemeResolver resolver;

void resolve() {
	String resolvedStyle = resolver.resolveStyleTag(StyleSettings.TAG_TITLE);
	// bold,fg:bright-white

	AttributedStyle style = resolver.resolveStyle(resolvedStyle);
	// jline attributed style from expression above

	String resolvedFigure = resolver.resolveFigureTag(FigureSettings.TAG_ERROR);
	// character i.e. U+2716 Heavy Multiplication X Emoji, cross
}