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