本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
转载自夜明的孤行灯
本文链接地址: 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/