本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
转载自夜明的孤行灯
本文链接地址: https://www.huangyunkun.com/2016/02/21/spring-boot-banner/
Spring Boot应用在启动的时候会输出一个Banner,同时还会输出使用的Spring Boot的版本。
默认的Banner如下

如果你需要自己替换的话可以放置一个banner.txt文件,这样Spring Boot就会使用自定义的banner,而不是默认的banner。
Spring Banner的选择逻辑
Banner的优先级和具体逻辑在SpringApplication中。
private Banner selectBanner(Environment environment) {
String location = environment.getProperty(BANNER_LOCATION_PROPERTY,
BANNER_LOCATION_PROPERTY_VALUE);
ResourceLoader resourceLoader = this.resourceLoader != null ? this.resourceLoader
: new DefaultResourceLoader(getClassLoader());
Resource resource = resourceLoader.getResource(location);
if (resource.exists()) {
return new ResourceBanner(resource);
}
if (this.banner != null) {
return this.banner;
}
return DEFAULT_BANNER;
}
尝试去加载自定义的banner,如果没有那么返回默认的。
默认的banner是SpringBootBanner,定义为
private static final String[] BANNER = { "",
" . ____ _ __ _ _",
" /\\\\ / ___'_ __ _ _(_)_ __ __ _ \\ \\ \\ \\",
"( ( )\\___ | '_ | '_| | '_ \\/ _` | \\ \\ \\ \\",
" \\\\/ ___)| |_)| | | | | || (_| | ) ) ) )",
" ' |____| .__|_| |_|_| |_\\__, | / / / /",
" =========|_|==============|___/=/_/_/_/" };
当然,你也可以直接关闭banner的输出,在createAndRefreshContext方法中
if (this.bannerMode != Banner.Mode.OFF) {
printBanner(environment);
}
当然这些都可以通过配置文件控制的。
Remote模式的banner
Spring Boot通过集成crash提供了Remote Shell,这样用户可以通过ssh直接登录。
在Remote模式下也是有banner的,但是如果你配置了banner.txt文件,你会发现Remote模式下的banner依然是默认的Spring banner。
这是因为login.groovy中并没有实现banner的选择逻辑,而是直接硬编码了一个banner
welcome = { ->
if (!crash.context.attributes['spring.environment'].getProperty("spring.main.show_banner", Boolean.class, Boolean.TRUE)) {
return ""
}
// Resolve hostname
def hostName;
try {
hostName = java.net.InetAddress.getLocalHost().getHostName();
}
catch (java.net.UnknownHostException ignore) {
hostName = "localhost";
}
// Get Spring Boot version from context
def version = crash.context.attributes.get("spring.boot.version")
return """\
. ____ _ __ _ _
/\\\\ / ___'_ __ _ _(_)_ __ __ _ \\ \\ \\ \\
( ( )\\___ | '_ | '_| | '_ \\/ _` | \\ \\ \\ \\
\\\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v$version) on $hostName
""";
}
prompt = { ->
return "> ";
}
还有一个可能的配置文件叫remote-banner.txt,但是它是应用于devtools的remote模式,并不是ssh登录的那个Remote模式。
所以目前而言,Remote模式是没有办法换Banner的,最好直接关闭。
本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
转载自夜明的孤行灯
本文链接地址: https://www.huangyunkun.com/2016/02/21/spring-boot-banner/