SpringBoot——关于banner

springboot启动后,控制台会打印一个图案出来,这个图案就叫banner,如果不配置的话打印的是springboot默认的banner,像这个样子:SpringBoot——关于banner_第1张图片

这个banner是可以通过多种方式自定义的,也可以设置显示模式关闭banner;

banner的显示模式

显示模式可以通过SpringApplication.setBannerMode()或者SpringApplicationBuilder.bannerMode()或者配置文件的spring.main.banner-mode设置;

显示模式:

  • CONSOLE:打印到System.out;(默认)
  • LOG:打印到log文件;
  • OFF:关闭banner;

使用banner文本

默认读取classpath下的banner.txt文本,也可以通过配置文件配置;

例如在resources文件夹里添加一个banner.txt:

SpringBoot——关于banner_第2张图片

启动springboot后就会打印:

SpringBoot——关于banner_第3张图片

而不再是默认的sprinngboot的banner了;

几个可以的生成banner的网址:

  • ASCII Generator (network-science.de)
  • IMG2TXT: ASCII Art Made Easy! (degraeve.com)
  • Text to ASCII Art Generator (TAAG) (patorjk.com)
  • Spring Boot banner在线生成工具,制作下载英文banner.txt,修改替换banner.txt文字实现自定义,个性化启动banner-bootschool.net

使用banner图片

默认读取classpath下的banner.gif或者banner.jpg或者banner.png图片,也可以通过配置文件配置;

例如resources文件夹下有个这样的banner.gif:(两帧的gif,一帧打印A一帧打印B)

启动会生成:(会将每一帧的图片按顺序全打印出来)

SpringBoot——关于banner_第4张图片

classpath下的banner.jpg图片:

生成:

SpringBoot——关于banner_第5张图片

classpath下的banner.png图片:

生成:

SpringBoot——关于banner_第6张图片

 banner图片只会读取一个,如果多个classpath下有同名的图片,按照classpath顺序使用最先读取到的同名图片;

SpringBoot——关于banner_第7张图片

classapth下的不同格式图片读取优先级:banner.gif > banner.jpg > banner.bng;

自定义banner类

可以通过实现Banner接口的printBanner()方法,使用SpringApplication.setBanner()方法或者SpringApplicationBuilder.banner()方法将该实现类设置为banner;

实现类MyBanner.java:(自定义banner类优先级比较低,去掉其他读取的banner再测试)

package testspringboot.test4banner;

import java.io.PrintStream;

import org.springframework.boot.Banner;
import org.springframework.boot.ansi.AnsiColor;
import org.springframework.core.env.Environment;

public class MyBanner implements Banner {

	@Override
	public void printBanner(Environment environment, Class sourceClass, PrintStream out) {
		String s = "HELLO WORLD\n"
				+ "BANNER  BANNER  BANNER  BANNER  BANNER  BANNER  BANNER  BANNER\n"
				+ "  BANNER  BANNER  BANNER  BANNER  BANNER  BANNER  BANNER  BANNER\n"
				+ "    BANNER  BANNER  BANNER  BANNER  BANNER  BANNER  BANNER  BANNER\n"
				+ "      BANNER  BANNER  BANNER  BANNER  BANNER  BANNER  BANNER  BANNER\n"
				+ "HELLO WORLD\n\n";
		out.print(s);
	}

}

启动类:

/**
 * 2022年10月28日上午9:30:25
 */
package testspringboot.test4banner;

import org.springframework.boot.Banner.Mode;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.WebApplicationType;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.context.annotation.PropertySource;

/**
 * @author XWF
 *
 */
@SpringBootApplication
public class Test4Main {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		SpringApplication app = new SpringApplication(Test4Main.class);	
		app.setWebApplicationType(WebApplicationType.NONE);	//关闭web服务
//		app.setBannerMode(Mode.OFF);	//关闭banner
		app.setBanner(new MyBanner());	//自定义Banner类
		app.run(args);
		
//		SpringApplicationBuilder builder = new SpringApplicationBuilder(Test4Main.class);
//		builder.web(WebApplicationType.NONE)
//			.bannerMode(Mode.OFF)
//			.banner(new MyBanner())
//			.run(args);
	}

}

执行结果:

SpringBoot——关于banner_第8张图片

banner的配置文件

properties或者yml里也可以对banner进行配置,相关配置如下:(似乎只能使用resources文件夹下的application.properties配置文件或者application.yml配置文件)

#设置显示banner模式,默认CONSOLE
 #OFF:关闭打印banner
 #CONSOLE:打印到System.out
 #LOG:打印到log文件
spring.main.banner-mode=console
#设置banner的字符编码,默认utf-8
spring.banner.charset=utf-8
#设置banner文本资源的位置,默认classpath:banner.txt
#支持classpath*:、classpath:、file:、http://和https://
spring.banner.location=classpath:banner.txt
#设置ANSI颜色的位深度,默认4
 #4:16色
 #8:256色
spring.banner.image.bitdepth=4
#设置banner图像的高度(单位字符),默认图像高度
spring.banner.image.height=20
#设置banner图像的宽度,默认76
spring.banner.image.width=100
#是否为暗色系背景图片反转颜色,默认false
spring.banner.image.invert=false
#设置banner图片的位置,默认classpath:banner.gif(jpg和png也适用)
spring.banner.image.location=classpath:banner.jpg
#设置banner图片左边空白间隔,默认2
spring.banner.image.margin=10
#设置渲染图像时使用的像素模式
#TEXT:使用文本字符
#BLOCK:使用unicode块字符
spring.banner.image.pixelmode=TEXT

另外,banner.txt等的名称也可以改成别的,例如:banner.abc、xxx.a等等;

banner优先级

application.properties、application.yml配置文件的banner文本和图片 > classpath下的banner.txt/banner.gif/banner.jpg/banner.png > 自定义banner类 > springboot默认banner;

如果同时有banner文本和banner图片,两者都会打印,先打印图片再打印文本;

banner.txt里的可设置参数

几个默认的可用参数:

  • MANIFEST.MF版本号:${application.version}
  • MANIFEST.MF格式化版本号:${application.formatted-version}
  • SpringBoot版本号:${spring-boot.version}
  • SpringBoot格式化版本号:${spring-boot.formatted-version}
  • MANIFEST.MF里的title:${application.title}

也可以使用properties或者yml里自定义的配置参数,使用${}访问;

例如:

application.properties里设置:

spring.banner.location=classpath:bannertest.txt

mybanner.version=1.0.0
say=hello world

bannertest.txt:

 _________  _______   ________  _________  ___   ___     
|\___   ___\\  ___ \ |\   ____\|\___   ___\\  \ |\  \    
\|___ \  \_\ \   __/|\ \  \___|\|___ \  \_\ \  \\_\  \   
     \ \  \ \ \  \_|/_\ \_____  \   \ \  \ \ \______  \  
      \ \  \ \ \  \_|\ \|____|\  \   \ \  \ \|_____|\  \ 
       \ \__\ \ \_______\____\_\  \   \ \__\       \ \__\
        \|__|  \|_______|\_________\   \|__|        \|__|
                        \|_________|                     

MANIFEST.MF版本号:${application.version}
MANIFEST.MF格式化版本号:${application.formatted-version}
SpringBoot版本号:${spring-boot.version}
SpringBoot格式化版本号:${spring-boot.formatted-version}
MANIFEST.MF里的title:${application.title}

配置文件application.properties里定义的参数:
mybanner.version:${mybanner.version}
say:${say}

打印结果:

SpringBoot——关于banner_第9张图片

 

banner.txt里的颜色和字体

springboot提供了3个枚举用来设置banner.txt里字符的颜色、背景色、字体:

  • AnsiColor:字符颜色
  • AnsiBackground:背景色
  • AnsiStyle:字体

SpringBoot——关于banner_第10张图片SpringBoot——关于banner_第11张图片SpringBoot——关于banner_第12张图片

使用${AnsiColor.NAME}, ${AnsiBackground.NAME}, ${AnsiStyle.NAME} 可设置从标签开始到banner结束的颜色和字体,除非后面遇到下一个同类标签才会改变;

例如:

banner文本:

 _________  _______   ________  _________  ___   ___     
|\___   ___\\  ___ \ |\   ____\|\___   ___\\  \ |\  \    
\|___ \  \_\ \   __/|\ \  \___|\|___ \  \_\ \  \\_\  \   
     \ \  \ \ \  \_|/_\ \_____  \   \ \  \ \ \______  \  
      \ \  \ \ \  \_|\ \|____|\  \   \ \  \ \|_____|\  \ 
       \ \__\ \ \_______\____\_\  \   \ \__\       \ \__\
        \|__|  \|_______|\_________\   \|__|        \|__|
                        \|_________|                     

MANIFEST.MF版本号:${application.version}
MANIFEST.MF格式化版本号:${application.formatted-version}
SpringBoot版本号:${spring-boot.version}
SpringBoot格式化版本号:${spring-boot.formatted-version}
MANIFEST.MF里的title:${application.title}

配置文件application.properties里定义的参数:
mybanner.version:${mybanner.version}
say:${say}

${AnsiColor.RED}红色字红色字1234 ${AnsiColor.GREEN}绿色字绿色字1234 ${AnsiColor.BLUE}蓝色字蓝色字1234
${AnsiBackground.YELLOW}黄色背景@@@ ${AnsiBackground.CYAN}青色背景@@@ ${AnsiBackground.BRIGHT_BLUE}亮蓝色背景@@@ 后面加空格                    
${AnsiColor.BRIGHT_GREEN}${AnsiBackground.BRIGHT_CYAN}------------后-面-改-为-亮-绿-色-字-和-亮-青-色-背-景------------
${AnsiStyle.BOLD}BOLD   ${AnsiStyle.FAINT}FAINT   ${AnsiStyle.ITALIC}ITALIC   ${AnsiStyle.UNDERLINE}UNDERLINE
${AnsiColor.DEFAULT}${AnsiBackground.DEFAULT}${AnsiStyle.NORMAL}还原到默认字还原到默认字还原到默认字

运行结果:

SpringBoot——关于banner_第13张图片

你可能感兴趣的:(SpringBoot,spring,boot,banner)