Добавление собственного Spring Boot Banner в приложение, от ручного к автоматическому.

Баннер – это первое что мы видим при запуске приложения, который по умолчанию говорит нам, что приложение работает на Spring Boot определенной версии.

Баннер в консоли по умолчанию для Spring Boot 2.7.5:

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::                (v2.7.5)

Но при желании, мы можем добавить свой собственный баннер, с полезной для нас информацией. Например, наше приложение собирается для development стенда в Docker Image с тегом latest, а мы хотим при старте сразу убедиться, что применилась важная конфигурация или запускается образ с обновленными версиями наших зависимостей – первое мы можем получить из контекста Spring, а второе из контекста сборки приложения.

Ручное добавление

Официальная документация по добавлению собственного баннера: Customizing the Banner.

Все довольно просто – нужно добавить файл banner.txt в ресурсы проекта (src/main/resources), в котором мы, например, можем вывести версию Spring Boot${spring-boot.version}, а также название приложения – ${spring.application.name} и режим работы приложения – ${application.mode}.

Содержимое src/main/resources/banner.txt:

This is My Banner! \o/
Spring Boot: ${spring-boot.version}
Application name: ${spring.application.name}
Application mode: ${application.mode}

Содержимое src/main/resources/application.yml:

spring:
  application:
    name: demo
application:
  mode: fast

Результат в консоли:

This is My Banner! \o/
Spring Boot: 2.7.5
Application name: demo
Application mode: fast

С помощью онлайн генератора баннеров – Online Spring Boot Banner Generator, мы можем сгенерировать ASCII art и добавить в наш banner.txt:

Онлайн генерация баннера
Онлайн генерация баннера

Автоматическое добавление

Существует возможность добавить баннер через код в приложении, но для автоматизации мы рассмотрим варианты для сборщиков – Maven и Gradle. Который за нас генерируют файл banner.txt. Это особенно удобно, когда у нас существует общий плагин для сборщика, в котором мы настроим генерацию баннера сразу для всех наших приложений.

Maven плагин

Для Maven существует плагин – ch.acanda.maven:spring-banner-plugin, со следующим примером конфигурации:

<build>
    <plugins>
        <plugin>
            <groupId>ch.acanda.maven</groupId>
            <artifactId>spring-banner-plugin</artifactId>
            <version>1.5.2</version>
            <executions>
                <execution>
                    <id>generate-spring-banner</id>
                    <phase>generate-resources</phase>
                    <goals>
                        <goal>generate</goal>
                    </goals>
                </execution>
            </executions>
            <configuration>
                <text>${project.name}</text>
                <outputDirectory>${project.build.outputDirectory}</outputDirectory>
                <filename>banner.txt</filename>
                <includeInfo>true</includeInfo>
                <!--Интересный блок-->
                <info>Version: ${application.version:${project.version}}, Server: ${server.address:localhost}:${server.port:8080}, Active Profiles: ${spring.profiles.active:none}</info>
                <version>${project.version}</version>
                <font>standard</font>
                <color>default</color>
                <useNonBrakingSpace>false</useNonBrakingSpace>
            </configuration>
        </plugin>
    </plugins>
</build>

В блоке info мы можем использовать к дополнению контекста Spring – контекст Maven и, например, передать версию нашей зависимости через переменную.

Gradle плагин

Для Gradle существует плагин – io.github.alexengrig.spring-banner, со следующим пример конфигурации:

springBanner {
    font = 'soft'
    caption = """Version: \${application.version:${project.version}}
Description: \${application.description:${project.description}}"""
}

В параметре caption мы можем использовать напрямую контекст Gradle и через экранирование \$ – контекст Spring.

Заключение

Мы можем положить информацию, действительно важную для нас при старте приложения, на видное место – в баннер, с простой реализацией через плагины.

Комментарии (3)


  1. mariyamm
    00.00.0000 00:00

    ????



  1. AntonCtrannik
    00.00.0000 00:00

    Про maven plugin не знал, Спасибо