IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> SpringBoot——关于banner -> 正文阅读

[Java知识库]SpringBoot——关于banner

springboot启动后,控制台会打印一个图案出来,这个图案就叫banner,如果不配置的话打印的是springboot默认的banner,像这个样子:

这个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后就会打印:

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

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

使用banner图片

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

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

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

classpath下的banner.jpg图片:

生成:

classpath下的banner.png图片:

生成:

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

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);
	}

}

执行结果:

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}

打印结果:

?

banner.txt里的颜色和字体

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

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

使用${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}还原到默认字还原到默认字还原到默认字

运行结果:

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-11-05 00:12:25  更:2022-11-05 00:14:00 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年3日历 -2025/3/10 18:53:36-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码