Production Ready
Externalize Configuration
Spring Boot Dokumentation: http://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#boot-features-external-config
Spring Boot Howto: https://docs.spring.io/spring-boot/docs/current/reference/html/howto-properties-and-configuration.html
Die im WAR/JAR verbackene application.properties
muß in verschiedenen Deployment-Umgebungen entsprechend angepaßt werden.
Übersteuern mit Aufrufparametern
Übersteuern mit externer application.properties
application.properties
Bei folgender Organisation
Die Properties werden in der Reihenfolge #1, #2, #3 gezogen, d. h. die Properties haben zur Laufzeit folgende Werte:
Spring Boot as a Service
http://docs.spring.io/spring-boot/docs/current/reference/html/deployment-install.html
http://file.allitebooks.com/20151028/Spring%20Boot%20Cookbook.pdf
Spring Boot ermöglich die Installation der Anwendung als Service (unter Linux über init.d
, systemd
und unter Windows). Die Installation als Service hat den Vorteil, daß sich das Betriebssystem um einen evtl. notwendigen Restart kümmert.
Der vordere Teil des Jar/War-Artefakts besteht aus dem sog. Launch-Skript (das scheinbar auch unter Windows funktioniert) - mittendrin beginnt der binäre Teil des Artefakts:
[^1] ACHTUNG: Nicht alle ZIP-Clients kommen mit dieser Art klar und werfen evtl. einen Fehler.
Unter CentOS und Ubuntu funktioniert das Default-Launch-Sktipt bei der Einbindung als systemd-Service. Bei anderen Distributionen hingegen muß evtl. ein eigenes Launch-Skript geschrieben werden[^2]. Entweder bindet man es bereits im spring-boot-maven-plugin
über embeddedLaunchScript
(und evtl. embeddedLaunchScriptProperties
) ein oder man konfiguriert es in der systemd-Service Datei (liegt unter /etc/systemd/system/myapp.service
). Dort wird das Launcher-Script referenziert und die Variable JARFILE
gesetzt:
[^2] Hier findet man ein Skeleton für das Launch-Skript: https://github.com/spring-projects/spring-boot/blob/master/spring-boot-tools/spring-boot-loader-tools/src/main/resources/org/springframework/boot/loader/tools/launch.script
Will man die JRE-Einstellungen der Anwendung konfigurieren, so sollte man eine conf
-Datei verwenden (http://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/html/deployment-install.html#deployment-script-customization-conf-file), die neben das war/jar-Artefakt gelegt wird. Alternativ könnte man das Launch-Skript anpassen.
Linux: systemd
http://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/html/deployment-install.html#deployment-systemd-service
Systemd benötigt eine Service-Datei in /etc/systemd/system/myapp.service
mit den Permissions 0644:
In diesem Beispiel gehe ich davon aus, daß die Anwendnung in /opt/myapp.jar
liegt.
Danach muß der systemd seine Konfiguration neu einlesen
und dann kann der Service gestartet werden:
Linux: init.d
http://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/html/deployment-install.html#deployment-initd-service
OS/X: launchd
... hab ich keine Ahnung
Windows Dienst
Ein Doppelclick auf der Spring-Boot-jar/war-Artefakt reicht für die Installation als Dienst ... also ACHTUNG!!!
Actuator
http://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#production-ready
Die sog. Production-Ready Features werden über die Dependency
Wenn man den Management-Port konfiguriert
dann sind die Actuator-Endpunkte nicht mehr über die normale Web-UI der Anwendung erreichbar, sondern nur noch über den Management-Port. Dies ist sehr praktisch, denn den Health-Status möchte man gerne in den Monitoring-Tools einer Landschaft abrufen. Dort will man aber evtl keine Truststore-Konfiguration vornehmen und man möchte ohne Login zugreifen können.
Optional kann der /docs
Endpunkt (http://IP_ADDRESS:PORT/docs) aktiviet werden:
Custom application info
http://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#production-ready-application-info
Features:
Monitoring/Health-Checks
Startup-Banner
http://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-spring-application.html
Beim Start der Applikation wird standardmäßig ein Banner angezeigt ... das ist konfigurierbar. Einfach eine banner.txt
in den Classpath legen.
Solche Banner macht niemand selber ... http://patorjk.com/software/taag (die Fonts Ogre, Doom, Standard, ANSI Shadow, CalvinS sind meine Favoriten):
Last updated
Was this helpful?