spring boot banner的配置
1、起因:
最近项目中用到es,就引入了easy-es的jar,该jar中存在一banner.txt文件,于是项目启动的横幅就从spring变成了easy-es,那么如何选择自己想要的横幅呢?
2、解决方案:
1、因为springboot的banner设置都有包访问权限,扩展接口只有重写Banner接口实现类,太麻烦,我没有往下研究了。 2、配置application 修改配置文件,指定banner.txt位置
spring:
banner:
location: classpath:banner.txt
3、源码逻辑
首先:springboot默认的配置在文件spring-configuration-metadata.json中:
{
"name": "spring.banner.location",
"type": "org.springframework.core.io.Resource",
"description": "Banner text resource location.",
"defaultValue": "classpath:banner.txt"
}
可见默认位置为:classpath:banner.txt 添加配置: spring.banner.location:classpath:abanner.txt 我们使用一个不存在的文件,这样springboot启动时就找不到banner文件了 根据源码中:
private Banner getBanner(Environment environment) {
SpringApplicationBannerPrinter.Banners banners = new SpringApplicationBannerPrinter.Banners();
banners.addIfNotNull(this.getImageBanner(environment));
banners.addIfNotNull(this.getTextBanner(environment));
if (banners.hasAtLeastOneBanner()) {
return banners;
} else {
return this.fallbackBanner != null ? this.fallbackBanner : DEFAULT_BANNER;
}
}
private static final Banner DEFAULT_BANNER = new SpringBootBanner();
4、解决方案:
1 、springboot启动使用默认的banner,即SpringBootBanner,当无banner.txt在resource文件夹下时,会打印spring图案 2、springboot引入jar包存在banner.txt,会打印该文件内容 3、指定banner.txt打印,我们可以自定义一个文件XXX.txt,然后再配置文件中配置,文件名不要用banner.txt,如此就可过滤掉引入jar中的图案 spring.banner.location:classpath:XXX.txt,启动时就会打印该文件内容
打印spring
//使用springboot默认banner,并且屏蔽其他jar中的banner
spring:
banner:
//自定义文件不存在
location: classpath:mybanner.txt
打印自定义文件
//使用自定义banner,并且屏蔽其他jar中的banner
spring:
banner:
//自定义文件存在
location: classpath:mybanner.txt
打印jar中的文件
//使用自定义banner
spring:
banner:
//自定义文件不存在
location: classpath:banner.txt
打印自定义的文件
//使用自定义banner
spring:
banner:
//自定义文件存在
location: classpath:banner.txt
|