Después de usar el banner personalizado, SpringBoot instantáneamente se hizo más alto ...

Cuando comience Spring Boot, es posible que queramos poner el logotipo de nuestra empresa o el logotipo del proyecto en él. Podemos probar estos métodos en este artículo, que le permitirán hacer rápidamente algunos huevos del proyecto Spring Boot al inicio para mejorar El grado de reconocimiento del proyecto, o simplemente roto para agregar algo de diversión a la vida aburrida, entonces este contenido de este artículo puede ayudarlo bien.

Los puntos de conocimiento de este artículo son los siguientes:

Knowledge Graph.png

Visualización de efecto de banner

El banner predeterminado de Spring Boot muestra el efecto de la siguiente manera:
Banner banner se inicia por defecto.png
podemos convertirlo en esto:

efecto banner 2.png

O algo como esto:

efecto de banner 1.png

O algo como esto:

efecto de banner 3.png
Simplemente volando, no solo puede personalizar el contenido, sino también personalizar el color , luego echemos un vistazo a cómo se implementa.

Banner personalizado

Hay dos formas de implementar un banner personalizado: una es reescribir la clase de Banner personalizada y la otra es implementar un archivo txt.

1. Reescribe la clase Banner

Primero, debe implementar la interfaz de Banner con una clase personalizada. El código de implementación es el siguiente:

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

import java.io.PrintStream;

public class MyBanner implements Banner {
    private static final String BANNER =
            "  ___ ___         .__  .__          \n" +
                    " /   |   \\   ____ |  | |  |   ____  \n" +
                    "/    ~    \\_/ __ \\|  | |  |  /  _ \\ \n" +
                    "\\    Y    /\\  ___/|  |_|  |_(  <_> )\n" +
                    " \\___|_  /  \\___  >____/____/\\____/ \n" +
                    "       \\/       \\/                  ";

    @Override
    public void printBanner(Environment environment, Class<?> sourceClass, PrintStream out) {
        out.println(BANNER);
        out.println();
    }
}

La BANNER variable es el contenido del banner personalizado. Puse uno aquí helloy luego configuré la clase Banner como una clase personalizada cuando se inicia Spring Boot. El código de implementación es el siguiente:

public static void main(String[] args) {
    SpringApplication springApplication = new SpringApplication(DemoApplication.class);
    // 设置自定义 Banner
    springApplication.setBanner(new MyBanner());
    // 启动 Spring Boot
    springApplication.run(args);
}

El efecto de ejecución final se muestra en la figura a continuación:

Banner personalizado.png

2. A través del archivo txt

Podemos crear un archivo banner.txt en el directorio / src / main / resources del proyecto Spring Boot y luego copiar la pintura de caracteres ASCII en él para reemplazar el banner predeterminado, como se muestra en la siguiente figura:

bannertxt location.png

La razón por la que puede usar el archivo banner.txt para implementar un banner personalizado es porque el marco Spring Boot buscará la información del banner en el siguiente orden cuando se inicie:

  • Primero encuentre el archivo banner.gif o banner.jpg o banner.png debajo de Classpath, y use el que encuentre primero;
  • Si no tiene ninguno de los anteriores, solo busque banner.txt en Classpath;
  • Si no se encuentra ninguno, se utilizará el Banner de arranque de Spring predeterminado.

Los puntos de conocimiento anteriores se aprenden en el código fuente SpringApplicationBannerPrinter, el código fuente principal es el siguiente:

class SpringApplicationBannerPrinter {
    static final String BANNER_LOCATION_PROPERTY = "spring.banner.location";
    static final String BANNER_IMAGE_LOCATION_PROPERTY = "spring.banner.image.location";
    static final String DEFAULT_BANNER_LOCATION = "banner.txt";
    static final String[] IMAGE_EXTENSION = new String[]{"gif", "jpg", "png"};
    // 忽略非核心源码
    private Banner getBanner(Environment environment) {
        SpringApplicationBannerPrinter.Banners banners = new SpringApplicationBannerPrinter.Banners();
        // 获取图片形式 banner
        banners.addIfNotNull(this.getImageBanner(environment));
        // 获取文字形式 banner
        banners.addIfNotNull(this.getTextBanner(environment));
        if (banners.hasAtLeastOneBanner()) {
            return banners;
        } else {
            return this.fallbackBanner != null ? this.fallbackBanner : DEFAULT_BANNER;
        }
    }

    private Banner getTextBanner(Environment environment) {
        String location = environment.getProperty("spring.banner.location", "banner.txt");
        Resource resource = this.resourceLoader.getResource(location);
        return resource.exists() ? new ResourceBanner(resource) : null;
    }

    private Banner getImageBanner(Environment environment) {
        String location = environment.getProperty("spring.banner.image.location");
        if (StringUtils.hasLength(location)) {
            Resource resource = this.resourceLoader.getResource(location);
            return resource.exists() ? new ImageBanner(resource) : null;
        } else {
            String[] var3 = IMAGE_EXTENSION;
            int var4 = var3.length;

            for(int var5 = 0; var5 < var4; ++var5) {
                String ext = var3[var5];
                Resource resource = this.resourceLoader.getResource("banner." + ext);
                if (resource.exists()) {
                    return new ImageBanner(resource);
                }
            }
            return null;
        }
    }
}

Por lo tanto, podemos usar banner.txt para personalizar la información del banner, por supuesto, también puede usar la forma de las imágenes para personalizar el banner.

Consejo: podemos usar banner.gif para lograr el efecto de banner dinámico. Pruébelo.

Este método es relativamente simple de implementar y es intrusivo en el código, lo cual se recomienda.

Control de estilo de banner

Lo anterior mencionó la modificación del texto del banner. También podemos modificar la presentación del banner y otros atributos, como el estilo de fuente, negrita, cursiva, etc. Spring Boot proporciona tres clases de enumeración para establecer estos estilos. :

  • AnsiColor: se usa para establecer el color de primer plano de los caracteres;
  • AnsiBackground: se usa para establecer el color de fondo del personaje.
  • AnsiStyle: Se usa para controlar negrita, cursiva, subrayado, etc.

Por ejemplo, podemos usar AnsiColor para establecer el color. La información en banner.txt es la siguiente:

${AnsiColor.BRIGHT_RED}  _  _              _       _
${AnsiColor.BRIGHT_RED} | || |    ___     | |     | |     ___
${AnsiColor.BRIGHT_YELLOW} | __ |   / -_)    | |     | |    / _ \
${AnsiColor.BRIGHT_YELLOW} |_||_|   \___|   _|_|_   _|_|_   \___/
${AnsiColor.BRIGHT_RED}_|"""""|_|"""""|_|"""""|_|"""""|_|"""""|
${AnsiColor.BRIGHT_RED}"`-0-0-'"`-0-0-'"`-0-0-'"`-0-0-'"`-0-0-'

El efecto de visualización final se muestra a continuación:

Color effect.png

Banner utiliza variables de salida

En banner.txt también podemos generar algunas variables globales, por ejemplo:

  • $ {application.version}: se utiliza para obtener el número de versión en el archivo MANIFEST.MF;
  • $ {application.formatted-version}: información de versión formateada de $ {application.version};
  • $ {spring-boot.version}: número de versión de Spring Boot;
  • $ {spring-boot.formatted-version}: información de versión formateada de $ {spring-boot.version}.

Ejemplos de uso son los siguientes:

      /¯¯¯¯\     
    o-|[][]|-o   
      |_--_|     
   /¯¯¯¯¯¯¯¯¯¯\  
   |||  «»  |||  
   |||      |||  
  (o)|      |(o) 
     |  ||  |    
     |__||__|    
     |__||__|

Spring Boot 版本:${spring-boot.version}

Generación en línea de imagen de banner

Generar dirección de banner en línea:

Se recomienda usar el primero, usando miniaturas de la siguiente manera:

Dirección en línea-1.png

Ocultar banner

Si necesitamos ocultar la información del banner, podemos usar los siguientes tres métodos .

1. Cerrar el banner por código

Podemos establecer un banner oculto antes de que se inicie Spring Boot (ejecutar), el código de implementación es el siguiente:

public class DemoApplication {
    public static void main(String[] args) {
        SpringApplication springApplication = new SpringApplication(DemoApplication.class);
        // 隐藏 banner
        springApplication.setBannerMode(Banner.Mode.OFF);
        // 启动 Spring Boot
        springApplication.run(args);
    }
}

2. Ocultar banner a través del archivo de configuración

El archivo de configuración en Spring Boot application.properties oculta la visualización del banner configurando la siguiente configuración, la configuración es la siguiente:

spring.main.banner-mode=off

3. Ocultar banner en la idea

Podemos ocultar el banner en la configuración de depuración de Idea, como se muestra en la siguiente figura:
idea cerrar banner.png

Adjunto: huevos de Pascua

Al final del artículo, se adjunta una pancarta de un Buda colorido:

${AnsiColor.BRIGHT_GREEN}$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
${AnsiColor.BRIGHT_YELLOW}$$                                _.ooOoo._                               $$
${AnsiColor.BRIGHT_RED}$$                               o888888888o                              $$
${AnsiColor.BRIGHT_CYAN}$$                               88"  .  "88                              $$
${AnsiColor.BRIGHT_MAGENTA}$$                               (|  ^_^  |)                              $$
${AnsiColor.BRIGHT_GREEN}$$                               O\   =   /O                              $$
${AnsiColor.BRIGHT_RED}$$                            ____/`-----'\____                           $$
${AnsiColor.BRIGHT_CYAN}$$                          .'  \\|       |$$  `.                         $$
${AnsiColor.BRIGHT_MAGENTA}$$                         /  \\|||   :   |||$$  \                        $$
${AnsiColor.BRIGHT_GREEN}$$                        /  _|||||  -:-  |||||-  \                       $$
${AnsiColor.BRIGHT_YELLOW}$$                        |   | \\\   -   $$/ |   |                       $$
${AnsiColor.BRIGHT_GREEN}$$                        | \_|  ''\-----/''  |   |                       $$
${AnsiColor.BRIGHT_YELLOW}$$                        \  .-\___  `-`  ____/-. /                       $$
${AnsiColor.BRIGHT_CYAN}$$                      ___`. .'   /--.--\   `. . ___                     $$
${AnsiColor.BRIGHT_RED}$$                    ."" '<  `.____\_<|>_/____.'  >'"".                  $$
${AnsiColor.BRIGHT_GREEN}$$                  | | :  `- \`.;`.\ _ /``;.`/ - ` : | |                 $$
${AnsiColor.BRIGHT_YELLOW}$$                  \  \ `-.   \_ ___\ /___ _/   .-` /  /                 $$
${AnsiColor.BRIGHT_CYAN}$$            ========`-.____`-.____\_____/____.-`____.-'========         $$
${AnsiColor.BRIGHT_MAGENTA}$$                                  `=---='                               $$
${AnsiColor.BRIGHT_YELLOW}$$            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^        $$
${AnsiColor.BRIGHT_GREEN}$$                     佛祖保佑          永无BUG         永不修改         $$
${AnsiColor.BRIGHT_YELLOW}$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
${AnsiColor.BRIGHT_YELLOW}

El efecto es el siguiente:

efecto de banner 3.png

Resumen

En este artículo, hemos hablado sobre dos formas de personalizar el banner, la forma de personalizar la clase de banner y banner.txt, lo que explica por qué podemos pasar banner.txt información de banner personalizada a través del análisis del código fuente . También hablamos sobre el control del estilo del banner (color, estilo de fuente, etc.) y los métodos de salida de variables globales, así como varias direcciones generadas por el mapa del banner en línea, y finalmente hablamos sobre 3 formas de ocultar el banner.

Ultimas palabras

Escriba cada original con cuidado, solo para estar a la altura de su reloj. Escribir es algo genial que puede ayudar a otros, y espero mantenerlo. Si lo encuentra útil, deme un visto bueno, él me animará a producir mejores artículos.

Referencia y reconocimiento

https://www.jianshu.com/p/c1f7617c99aa

https://www.jianshu.com/p/9a2c20e3766d

Supongo que te gusta

Origin www.cnblogs.com/vipstone/p/12736773.html
Recomendado
Clasificación