Grails 3 основан на Spring Boot. Это означает, что мы получаем большую часть функциональности Spring Boot в наших приложениях Grails. Приложение Spring Boot по умолчанию имеет баннер, который отображается при запуске приложения. Приложение Grails по умолчанию переопределяет поведение Spring Boot и отключает отображение баннера. Чтобы снова добавить баннер в наше приложение Grails, у нас есть разные варианты.
Сначала мы можем добавить файл banner.txt
в наш classpath. Если Grails найдет файл, он покажет содержимое, когда мы запустим приложение. Давайте добавим простой баннер с Grails3 в Ascii art в файл src/main/resources/banner.txt
. Поместив файл в src/main/resources
мы можем убедиться, что он находится в classpath как classpath:/banner.txt
:
1
2
3
4
5
6
|
________ .__.__ ________ / _____/___________ |__| | _____\_____ \ / \ __\_ __ \__ \ | | | / ___/ _(__ < \ \_\ \ | \ // __ \| | |__\___ \ / \ \______ /__| (____ /__|____/____ >______ / \/ \/ \/ \/ |
Давайте запустим наше приложение с задачей bootRun
:
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
|
gradle bootRun :compileJava UP-TO-DATE :compileGroovy UP-TO-DATE :processResources :classes :findMainClass :bootRun ________ .__.__ ________ / _____/___________ |__| | _____\_____ \ / \ __\_ __ \__ \ | | | / ___/ _(__ < \ \_\ \ | \ // __ \| | |__\___ \ / \ \______ /__| (____ /__|____/____ >______ / \/ \/ \/ \/ Grails application running at http: //localhost:8080 ... |
Чтобы получить больше информации в баннере, мы можем реализовать интерфейс org.springframework.boot.Banner
. Этот интерфейс имеет метод printBanner
в котором мы можем написать реализацию для баннера. Чтобы использовать его, мы должны создать экземпляр класса GrailsApp
и установить свойство banner
:
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
|
// File: grails-app/init/banner/Application.groovy package banner import grails.boot.GrailsApp import grails.boot.config.GrailsAutoConfiguration import grails.util.Environment import org.springframework.boot.Banner import static grails.util.Metadata.current as metaInfo class Application extends GrailsAutoConfiguration { static void main(String[] args) { final GrailsApp app = new GrailsApp(Application) app.banner = new GrailsBanner() app.run(args) } } /** * Class that implements Spring Boot Banner * interface to show information on application startup. */ class GrailsBanner implements Banner { private static final String BANNER = '' ' ________ .__.__ ________ / _____/___________ |__| | _____\\_____ \\ / \\ __\\_ __ \\__ \\ | | | / ___/ _(__ < \\ \\_\\ \\ | \\ // __ \\| | |__\\___ \\ / \\ \\______ /__| (____ /__|____/____ >______ / \\/ \\/ \\/ \\/ '' ' @Override void printBanner( org.springframework.core.env.Environment environment, Class<?> sourceClass, PrintStream out) { out.println BANNER row 'App version' , metaInfo.getApplicationVersion(), out row 'App name' , metaInfo.getApplicationName(), out row 'Grails version' , metaInfo.getGrailsVersion(), out row 'Groovy version' , GroovySystem.version, out row 'JVM version' , System.getProperty( 'java.version' ), out row 'Reloading active' , Environment.reloadingAgentEnabled, out row 'Environment' , Environment.current.name, out out.println() } private void row( final String description, final value, final PrintStream out) { out.print ':: ' out.print description.padRight( 16 ) out.print ' :: ' out.println value } } |
Теперь мы снова bootRun
задачу bootRun
:
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
$ gradle bootRun :compileJava UP-TO-DATE :compileGroovy :processResources :classes :findMainClass :bootRun ________ .__.__ ________ / _____/___________ |__| | _____\_____ \ / \ __\_ __ \__ \ | | | / ___/ _(__ < \ \_\ \ | \ // __ \| | |__\___ \ / \ \______ /__| (____ /__|____/____ >______ / \/ \/ \/ \/ :: App version :: 0.1 :: App name :: grails-banner-sample :: Grails version :: 3.0 . 1 :: Groovy version :: 2.4 . 3 :: JVM version :: 1.8 .0_45 :: Reloading active :: true :: Environment :: development Grails application running at http: //localhost:8080 ... |
Написано с Grails 3.0.1. Искусство Ascii генерируется с помощью этого сайта .
Ссылка: | Grails Goodness: добавьте баннер в приложение Grails от нашего партнера JCG Хьюберта Иккинка в блоге JDriven . |