Собственный и полезный Spring Boot Banner

от автора

Добавление собственного 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.

Заключение

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


ссылка на оригинал статьи https://habr.com/ru/post/715388/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *