Добавление собственного 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.
Заключение
Мы можем положить информацию, действительно важную для нас при старте приложения, на видное место – в баннер, с простой реализацией через плагины.