Seit ihrer Ver­öf­fent­li­chung im Jahr 1995 zählt Java zu den po­pu­lärs­ten und meist­ge­nutz­ten Pro­gram­mier­spra­chen. Ins­be­son­de­re, wenn es um die Rea­li­sie­rung komplexer Business-Ap­pli­ka­tio­nen (online oder offline) geht, spielt die ob­jekt­ori­en­tier­te Sprache ihre Stärken aus. In Kom­bi­na­ti­on mit der Java-Lauf­zeit­um­ge­bung (JRE) zeichnen sich diese An­wen­dun­gen vor allem durch ihre Platt­form­un­ab­hän­gig­keit aus, die sie für ein besonders breites Publikum verfügbar macht.

Um die Arbeit mit Java zu ver­ein­fa­chen, wurden im Laufe der ver­gan­ge­nen Jahr­zehn­te diverse Frame­works ent­wi­ckelt, die dem Nutzer ein ein­satz­fer­ti­ges Ba­sis­ge­rüst für das zu ent­wi­ckeln­de Java-Programm zur Verfügung stellen. Eines der be­kann­tes­ten ist das bereits 2003 ver­öf­fent­lich­te Open-Source-Framework Spring, das die Kom­ple­xi­tät der stan­dard­mä­ßi­gen Java-Spe­zi­fi­ka­ti­on („J2EE“ bzw. „Java Plattform“) sowie des Kom­po­nen­ten­mo­dells En­ter­pri­se JavaBeans („EJB“) bedeutend reduziert. Spä­tes­tens seit dem Release der Ergänzung Spring Boot, die die Kon­fi­gu­ra­ti­on neuer Spring-Projekte zu­sätz­lich ver­ein­facht, erweist sich das Gerüst als ex­zel­len­te und nut­zer­freund­li­che Wahl für alle, die bei der Ent­wick­lung einer neuen Java-Ap­pli­ka­ti­on nicht komplett bei null anfangen wollen.

In diesem Spring-Boot-Tutorial erfahren Sie, welche Vor­aus­set­zun­gen es für die Nutzung zu erfüllen gilt und wie Sie die ersten Schritte mit dem modular auf­ge­bau­ten Framework und dem Aufsatz Spring Boot be­wäl­ti­gen.

Was ist Spring Boot?

Spring Boot ist eine „Kon­ven­ti­on vor Kon­fi­gu­ra­ti­on“-Lösung für das Java-Framework Spring, die 2012 ver­öf­fent­licht wurde und die Kom­ple­xi­tät der Kon­fi­gu­ra­ti­on neuer Spring-Projekte reduziert. Zu diesem Zweck legt Spring Boot eine Grund­kon­fi­gu­ra­ti­on inklusive Richt­li­ni­en für die Nutzung des Frame­works sowie aller re­le­van­ten Dritt­an­bie­ter-Bi­blio­the­ken fest und gibt damit den Weg vor, um den Einstieg in neue Projekte so mühelos wie möglich zu gestalten. Auf diese Weise lässt sich die Kreation ei­gen­stän­di­ger, pro­duk­ti­ons­rei­fer Ap­pli­ka­tio­nen auf Basis von Spring erheblich ver­ein­fa­chen, weshalb der Großteil neuer Spring-An­wen­dun­gen kon­se­quen­ter­wei­se auch auf Spring Boot aufsetzt.

Die Merkmale von Spring Boot lassen sich wie folgt zu­sam­men­fas­sen:

  • direktes Einbetten von Webserver-/Container-An­wen­dun­gen wie Apache Tomcat oder Jetty möglich, wodurch kein Einsatz von WAR-Dateien (Web Appli­ca­ti­on Archive) er­for­der­lich ist
  • ver­ein­fach­te Maven-Kon­fi­gu­ra­ti­on dank „Starter“-POMs (Project Object Models)
  • au­to­ma­ti­sche Spring-Kon­fi­gu­ra­ti­on, wann immer dies möglich ist
  • Be­reit­stel­lung nicht­funk­tio­na­ler Features wie Metriken oder aus­ge­la­ger­ter Kon­fi­gu­ra­tio­nen

Mit Spring Boot hat die Ent­wick­ler­fir­ma Pivotal Software dem bereits 2005 er­schie­ne­nen Framework einen modernen, zu­kunfts­ge­rich­te­ten Ansatz verliehen. Die Er­wei­te­rung pro­fi­tiert dabei von der über Jahre gereiften Ba­sis­tech­no­lo­gie des Spring-Frame­works, die auch maß­geb­lich in Spring Boot ein­ge­flos­sen ist. De­tail­lier­te In­for­ma­tio­nen zu dem quell­of­fe­nen Framework (Apache License 2.0) selbst erhalten Sie in unserem aus­führ­li­chen Artikel über das Spring Framework.

Spring-Boot-Tutorial: An­for­de­run­gen, In­stal­la­ti­on und erste Schritte

Seit der Er­wei­te­rung von Spring durch Spring Boot gilt die Software von Pivotal Software als eine der besten Lösungen für die Ent­wick­lung von Mi­cro­ser­vices in Java. Dank der rund 20 Module des Basis-Frame­works, die sich nach Belieben zu­sam­men­stel­len lassen, eignet sich Spring Boot jedoch auch für diverse andere Szenarien, wobei es sich weder konkret als Framework für Web­ap­pli­ka­tio­nen noch als klas­si­sche Lösung für Desktop-Apps einordnen lässt.

Bevor wir im folgenden Spring-Boot-Tutorial (deutsch) näher auf die Kon­fi­gu­ra­ti­on und Kreation eines neuen Projekts sowie die initiale Spring-Boot-Struktur eingehen, befassen wir uns zunächst mit den tech­ni­schen An­for­de­run­gen und der Ein­rich­tung der er­for­der­li­chen Pro­jekt­kom­po­nen­ten.

Welche Sys­tem­vor­aus­set­zun­gen stellt Spring Boot?

Bei Spring Boot dreht sich alles um Java, weshalb die Java-Lauf­zeit­um­ge­bung (Java Platform) die zentrale Software-Kom­po­nen­te ist, um das Framework zum Laufen zu bringen. Da Sie die Anwendung nicht nur ausführen, sondern auch für die Ent­wick­lung mit Java nutzen, benötigen Sie min­des­tens Version 8 (bzw. 1.8) des so­ge­nann­ten Java De­ve­lo­p­ment Kit (JDK). Dieses enthält zu­sätz­lich zur Lauf­zeit­um­ge­bung nützliche Tools, um Java-Ap­pli­ka­tio­nen zu pro­gram­mie­ren und zu testen. Es ist sowohl für Linux als auch für Windows und macOS verfügbar ist, hin­sicht­lich des Be­triebs­sys­tems haben Sie also freie Auswahl.

Selbst­ver­ständ­lich setzt die Er­wei­te­rung auch voraus, dass die aktuelle Version des Spring-Frame­works selbst auf dem System in­stal­liert ist.

Als Build-Tool kommen entweder Maven (ab 3.3) oder Gradle (ab 4.4) in Frage.

Wollen Sie von der Mög­lich­keit Gebrauch machen, einen Webserver ein­zu­bin­den, der Ihre Java-Ap­pli­ka­ti­on auf Servlet-Basis ausführt, haben Sie die Wahl zwischen den drei Lösungen Apache Tomcat (ab 9.0), Jetty (ab 9.4) und Undertow (ab 2.0).

So erstellen Sie Ihr erstes Spring-Boot-Projekt

Spring Boot verwenden Sie ebenso wie jede Standard-Java-Bi­blio­thek, indem Sie die ent­spre­chen­den JAR- (Java Archive) bzw. WAR-Dateien (Web Ap­pli­ca­ti­on Archive) in den Klas­sen­pfad (Classpath) einbinden. Diesen Pfad im Da­tei­sys­tem nutzt Java, um nach aus­führ­ba­ren Dateien zu suchen. Die Ar­chiv­da­tei­en für Spring Boot können Sie dabei auf zwei ver­schie­de­nen Wegen erstellen:

  • Sie in­stal­lie­ren und nutzen Maven oder Gradle, um das Pro­jekt­ge­rüst inklusive der er­for­der­li­chen Ab­hän­gig­kei­ten gänzlich auf eigene Faust zu erstellen.
  • Sie greifen auf den Web­ser­vice Spring In­itia­lizr zurück, stellen mit diesem Ihr Spring-Boot-Setup zusammen und laden es an­schlie­ßend als fertige Pro­jet­vor­la­ge herunter.

Die Be­son­der­heit letzterer Lösung besteht darin, dass Sie die JAR-Dateien über eine nut­zer­freund­li­che Web­ober­flä­che erstellen können, die den Prozess we­sent­lich ver­ein­facht. Da der In­itia­lizr ebenfalls auf Maven oder Gradle zu­rück­greift, um die Dateien zu ge­ne­rie­ren, un­ter­schei­det sich das Ergebnis nämlich nicht von dem des manuellen Wegs. Im Rahmen dieses Java- bzw. Spring-Boot-Tutorials haben wir uns daher für den We­b­as­sis­ten­ten ent­schie­den, der sich über die Adresse start.spring.io aufrufen lässt.

Hinweis

Wenn Sie sich für die Nutzung von Spring In­itia­lizr ent­schei­den, müssen Java und Maven bzw. Gradle ebenso in­stal­liert sein, damit Sie an Ihrer Spring-Boot-Ap­pli­ka­ti­on arbeiten können.

Haben Sie Spring In­itia­lizr geöffnet, können Sie der Reihe nach die ge­wünsch­ten Ei­gen­schaf­ten Ihrer ersten Spring-Boot-Anwendung de­fi­nie­ren: Zunächst legen Sie das Build-System fest, indem Sie „Maven Project“ oder „Gradle Project“ auswählen. Die zweite Zeile gibt Ihnen die Mög­lich­keit, sich für das klas­si­sche Java oder al­ter­na­tiv für eine andere Sprache der Java-Familie wie Kotlin oder Groovy zu ent­schei­den. Ferner de­fi­nie­ren Sie die zu­grun­de­lie­gen­de Spring-Boot-Version, die Metadaten des Projekts (inklusive der Java-Version) sowie alle re­le­van­ten Ab­hän­gig­kei­ten (Da­ten­ban­ken, Si­cher­heits-Features, Web-Schnitt­stel­len, Cloud-Services etc.). Per Klick auf „Generate Project“ erzeugen Sie schließ­lich die Pro­jekt­da­tei­en.

Tipp

Wollen Sie Ihr Spring-Boot-Projekt auf eigene Faust mit Maven und Gradle anlegen, können Sie sich an den In­stal­la­ti­ons­an­lei­tun­gen in den of­fi­zi­el­len Online-Manuals ori­en­tie­ren.

Er­stell­tes Spring-Boot-Projekt ausführen

Spring In­itia­lizr bietet Ihnen die erzeugten Pro­jekt­da­tei­en zum Download an, wobei diese sich zunächst in einem ZIP-Archiv befinden, das Sie nach dem Her­un­ter­la­den entpacken müssen. Im ent­pack­ten Ordner finden Sie u. a. die jeweilige Kon­fi­gu­ra­ti­ons­da­tei: Haben Sie Gradle für das Build-Ma­nage­ment aus­ge­wählt, handelt es sich dabei um die Datei build.gradle; bei Maven-Projekten sollten Sie dort die Datei pom.xml vorfinden. In letzterem Fall, der auch auf unser Vorgehen in diesem Spring-Boot-Tutorial zutrifft, sieht der Inhalt der Kon­fi­gu­ra­ti­ons­da­tei in etwa wie folgt aus:

Mithilfe der je­wei­li­gen Build-Software kreieren Sie aus den vor­lie­gen­den Ar­chiv­da­tei­en eine aus­führ­ba­re Spring-Boot-Ap­pli­ka­ti­on. Hierfür öffnen Sie das Terminal bzw. die Ein­ga­be­auf­for­de­rung und führen im Ziel­ord­ner (also im Ordner Ihrer Spring-Boot-Dateien) den folgenden Befehl aus, wenn Sie Maven verwenden:

mvn clean install

Für Gradle-Projekte lautet der Befehl indes fol­gen­der­ma­ßen:

gradle clean build

In beiden Fällen erhalten Sie nach er­folg­rei­cher Ver­ar­bei­tung des Kommandos die Meldung „BUILD SUCCESS“, sobald die Ar­chiv­da­tei­en er­folg­reich erstellt wurden. Die aus­führ­ba­re Datei wird dabei im Ordner „target“ (Maven) bzw. unter „build/libs“ (Gradle) abgelegt. In unserem Fall lautet der Name dieser JAR-Datei „demo-0.0.1-SNAPSHOT.jar“:

Ausführen lässt sie sich mithilfe von Java, indem Sie folgenden Befehl eintippen:

java -jar demo-0.0.1-SNAPSHOT.jar

Den im Code-Beispiel zur Ver­deut­li­chung kursiv gesetzten Namen der JAR-Datei gilt es dabei ent­spre­chend zu ersetzen, falls sich dieser von dem hier genannten un­ter­schei­det. Anhand des an­schlie­ßend in der Kom­man­do­zei­le an­ge­zeig­ten Outputs können Sie nun sehen, ob die Spring-Boot-Ap­pli­ka­ti­on er­folg­reich gestartet werden konnte. Haben Sie einen der erwähnten Webserver wie Tomcat ein­ge­bun­den, wird dieser ebenfalls gestartet. Sie können ihn mit dem Browser Ihrer Wahl an­spre­chen, indem Sie folgende Adresse abrufen:

http://localhost:8080

Spring Boot mit Datenbank und Da­ten­quel­le verbinden

Spring Boot bietet eine erst­klas­si­ge Un­ter­stüt­zung bei der Kreation und Ein­bin­dung von Da­ten­quel­len in beliebige SQL- oder NoSQL-Da­ten­ban­ken. So müssen Sie hierfür keinen zu­sätz­li­chen Code schreiben, um eine neue Da­ten­quel­le anzulegen, sondern lediglich die er­for­der­li­chen Ab­hän­gig­kei­ten und Kon­fi­gu­ra­ti­ons­de­tails hin­zu­fü­gen. Möglich macht dies die ein­heit­li­che Datenbank-Schnitt­stel­le JDBC (Java Database Con­nec­ti­vi­ty), für die es zunächst einen Starter-Eintrag in der Kon­fi­gu­ra­ti­ons­da­tei zu erstellen gilt, falls Sie die Ab­hän­gig­keit nicht bereits bei der Kreation des Projekts mit Spring In­itia­lizr hin­zu­ge­fügt haben (gleiches gilt für das Hin­zu­fü­gen weiterer genannter Ab­hän­gig­kei­ten).

Maven-Nutzer ergänzen hierfür in der pom.xml folgende Zeilen:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>

Gradle-User erledigen diesen Schritt durch das Einfügen des folgenden Eintrags in die build.gradle-Datei:

compile('org.springframework.boot:spring-boot-starter-jdbc')
Hinweis

Sie können die jeweilige Kon­fi­gu­ra­ti­ons­da­tei mit jedem han­dels­üb­li­chen Code-Editor öffnen. Wichtig ist, dass die Datei im Anschluss an die Ver­än­de­run­gen auch wieder im XML- bzw. Gradle-Format ge­spei­chert wird.

Im zweiten Schritt erweitern Sie die jeweilige Build-Kon­fi­gu­ra­ti­ons­da­tei um die Ab­hän­gig­keit für das ge­wünsch­te Datenbank-Ma­nage­ment-System. In diesem Spring-Boot-Tutorial verbinden wir unsere Ap­pli­ka­ti­on mit einer MySQL-Datenbank, die wir für unsere Ap­pli­ka­ti­on nutzen wollen und zuvor bereits in­stal­liert haben.

Die pom.xml von Maven-Projekte benötigt hierfür folgenden neuen Eintrag:

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
</dependency>

In der Gradle-Kon­fi­gu­ra­ti­on muss folgende Zeile ergänzt werden, um die Ver­bin­dung zur MySQL-Datenbank zu erstellen:

compile('mysql:mysql-connector-java')

An­schlie­ßend sind einige Ei­gen­schaf­ten in der PRO­PER­TIES-Datei „ap­pli­ca­ti­on“ hin­zu­zu­fü­gen. Zu finden ist diese Datei unter dem Pfad \src\main\resources im Spring-Boot-Projekt-Ver­zeich­nis. Öffnen Sie diese Textdatei und fügen Sie folgende Kon­fi­gu­ra­ti­ons­zei­len ein:

spring.datasource.driverClassName = com.mysql.jdbc.Driver
spring.datasource.url = jdbc:mysql://localhost:3306/PRODUCTSERVICE?autoreconnect = true
spring.datasource.username = root
spring.datasource.password = root
spring.datasource.tomcat.testOnBorrow = true
spring.datasource.tomcat.testWhileIdle = true
spring.datasource.tomcat.timeBetweenEvictionRunsMillis = 60000
spring.datasource.tomcat.minEvictableIdleTimeMillis = 30000
spring.datasource.tomcat.validationQuery = SELECT 1
spring.datasource.tomcat.max-active = 15
spring.datasource.tomcat.max-idle = 10
spring.datasource.tomcat.max-wait = 8000

Nun können Sie MySQL auf gewohntem Wege nutzen, um eine Datenbank inklusive der ge­wünsch­ten Da­ten­ta­bel­len zu erstellen – falls Sie dies nicht bereits getan haben. Ein­stei­ger finden de­tail­lier­te In­for­ma­tio­nen über die Ver­wen­dung des re­la­tio­na­len Datenbank-Ma­nage­ment-Systems in unserem um­fang­rei­chen MySQL-Tutorial.

SSL/TLS-Zer­ti­fi­kat ge­ne­rie­ren und HTTPS ak­ti­vie­ren

Stan­dard­mä­ßig nutzt eine erstellte Spring-Boot-Anwendung das un­ge­si­cher­te Protokoll HTTP und den TCP-Port 8080 für die Ver­bin­dung zum je­wei­li­gen Webserver. Um statt­des­sen das ge­si­cher­te HTTPS und den hierfür vor­ge­se­he­nen TCP-Port 443 zur Stan­dard­wahl zu machen, benötigen Sie ein SSL-Zer­ti­fi­kat sowie die passenden Ei­gen­schaf­ten in der „ap­pli­ca­ti­on“-PRO­PER­TIES-Datei.

Ersteres erhalten Sie wahlweise von einer Zer­ti­fi­zie­rungs­stel­le oder indem Sie ein selbst­si­gnier­tes Zer­ti­fi­kat mithilfe der Java-Lauf­zeit­um­ge­bung erstellen. Diese hat mit dem Ma­nage­ment Utility Key Tool ein Kom­man­do­zei­len-Werkzeug parat, mit dem Sie ganz un­kom­pli­ziert PKCS12-Dateien (enthalten X.509-Zer­ti­fi­kat und privaten Schlüssel) für Server wie Tomcat, Exchange, IIS etc. erstellen können. Wenn Sie bei­spiels­wei­se einen Tomcat-Server nutzen, geben Sie in die Ein­ga­be­auf­for­de­rung bzw. in das Terminal folgenden Befehl ein, um die Schlüs­sel­spei­cher­da­tei für Ihre Spring-Boot-Ap­pli­ka­ti­on zu ge­ne­rie­ren:

keytool -genkeypair -alias tomcat -storetype PKCS12 -keyalg RSA -keysize 2048 -keystore keystore.p12 -validity 3650

Zur Per­so­na­li­sie­rung des Zer­ti­fi­kats vergeben Sie im Anschluss ein in­di­vi­du­el­les Passwort und machen einige Angaben zu Ihrer Person, zu Ihrem Un­ter­neh­men sowie zu Ihrem Standort:

Die Schlüs­sel­spei­cher­da­tei wird in der Folge au­to­ma­tisch in dem Ver­zeich­nis abgelegt, in dem Sie den Befehl aus­ge­führt haben (in diesem Spring-Boot-Tutorial: im eigenen Be­nut­zer­ver­zeich­nis). Kopieren Sie die „keystore“-Datei in das Ver­zeich­nis Ihrer Spring-Boot-Ap­pli­ka­ti­on und erweitern Sie die bereits bei der Datenbank-Ein­bin­dung benötigte „ap­pli­ca­ti­on“-PRO­PER­TIES-Datei um folgende Zeilen:

server.port = 443
server.ssl.key-store = C:/demo/keystore.p12
server.ssl.key-store-password = springboot
server.ssl.key-store-type = PKCS12
server.ssl.key-alias = tomcat

Erstellen Sie ab­schlie­ßend eine neue aus­führ­ba­re JAR-Datei, die wie kon­fi­gu­riert via HTTPS mit Tomcat verbindet, mithilfe des folgenden Befehls:

mvn -Dmaven.test.skip=true -DskipTests=true clean install

Debugging der Spring-Boot-App mit Spring Cloud Sleuth und Zipkin ver­ein­fa­chen

Das ständige Testen gehört zu den wich­tigs­ten Aufgaben bei der Software-Ent­wick­lung, denn nur auf diese Weise lassen sich alle Fehler, die bei der Pro­gram­mie­rung entstehen, ausfindig machen und beheben. Das Auswerten von Log-Dateien ist al­ler­dings in der Regel sehr komplex, was den Debugging-Prozess häufig sehr aufwendig macht – ins­be­son­de­re bei Mi­cro­ser­vices. Zum Abschluss des Spring-Boot-Tutorials wollen wir daher die Tracing-Lösungen Spring Cloud Sleuth und Zipkin ein­rich­ten, um die Spring-Boot-Ap­pli­ka­ti­on rundum zu über­wa­chen.

Mithilfe der beiden Tracing-An­wen­dun­gen können Sie alle Requests über einen zuvor ein­ge­rich­te­ten REST-Con­trol­ler pro­blem­los nach­ver­fol­gen und jederzeit den zeit­li­chen Ablauf dar­stel­len.

Schritt 1: Spring Cloud Sleuth zum Projekt hin­zu­fü­gen

Binden Sie zunächst das Sleuth-Modul in Ihre Spring-Boot-Ap­pli­ka­ti­on ein, indem Sie die Ab­hän­gig­keit in der Build-Kon­fi­gu­ra­ti­ons­da­tei setzen. Fügen Sie hierfür folgenden Inhalt in die pom.xml ein, wenn Sie Maven nutzen:

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-sleuth</artifactId>
    <version>${spring-cloud-sleuth.version}</version>
    <type>pom</type>
    <scope>import</scope>
</dependency>

In der Kon­fi­gu­ra­ti­ons­da­tei von Gradle-Projekten gilt es, folgende Zeile hin­zu­zu­fü­gen:

compile('org.springframework.cloud:spring-cloud-starter-sleuth')

Schritt 2: Sleuth-Logs in die Klas­sen­da­tei des REST-Con­trol­lers einbinden

Der REST-Con­trol­ler Ihrer Spring-Boot-Anwendung muss nun so kon­fi­gu­riert werden, dass er die Log-Dateien von Sleuth wie gewünscht ver­ar­bei­tet. Fügen Sie der .class-Datei des Con­trol­lers zu diesem Zweck folgenden Kon­fi­gu­ra­ti­ons­text hinzu – der Paketname (hier spring-boot-tutorial) ent­spricht dabei der Domäne der <groupId> in der pom.xml:

package spring-boot-tutorial.sleuth;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@SpringBootApplication
@RestController
public class SleuthappApplication {
    private static final Logger LOG = Logger.getLogger(SleuthappApplication.class.getName());
    public static void main(String[] args) {
        SpringApplication.run(SleuthappApplication.class, args);
    }
    @RequestMapping("/")
    public String index() {
        LOG.log(Level.INFO, "Index API is calling");
        return "Sleuth: Spring-Boot-Tutorial-Test!";
    }
}

Schritt 3: Name der Spring-Anwendung in den Ei­gen­schaf­ten aufführen

Um si­cher­zu­stel­len, dass der Name der Spring-Boot-Ap­pli­ka­ti­on in Zipkin korrekt angezeigt wird, sollten Sie den Namen in der „ap­pli­ca­ti­on“-PRO­PER­TIES-Datei angeben. Speichern Sie die Kon­fi­gu­ra­ti­on auf einem Spring-Cloud-Kon­fi­gu­ra­ti­ons­ser­ver, ist selbiges in der PRO­PER­TIES-Datei „bootstrap“ zu erledigen:

spring.application.name = Spring-Boot-Tutorial-App

Schritt 4: Zipkin zum Projekt hin­zu­fü­gen

Zipkin hilft dabei, die Sleuth-Logs zu über­wa­chen und zu verwalten, wobei sich die Open-Source-Software aus einem User-Interface und einer Ser­ver­kom­po­nen­te zu­sam­men­setzt. Für beides werden Ab­hän­gig­kei­ten in der je­wei­li­gen Build-Kon­fi­gu­ra­ti­ons­da­tei hin­zu­ge­fügt. Maven-User setzen hierfür folgenden Inhalt in die pom.xml ein:

<dependency>
    <groupId>io.zipkin.java</groupId>
    <artifactId>zipkin-server</artifactId>
</dependency>
<dependency>
    <groupId>io.zipkin.java</groupId>
    <artifactId>zipkin-autoconfigure-ui</artifactId>
    <scope>runtime</scope>
</dependency>

In der Gradle-Kon­fi­gu­ra­ti­on sehen die neuen Zeilen wie folgt aus:

compile('io.zipkin.java:zipkin-autoconfigure-ui')
compile('io.zipkin.java:zipkin-server')

Schritt 5: Der Ap­pli­ka­ti­on er­mög­li­chen, als Zipkin-Server zu agieren

Im nächsten Schritt sorgen Sie dafür, dass Ihr Spring-Boot-Projekt als Zipkin-Server agieren kann. Hierfür erstellen Sie eine Datei mit dem Namen zipkin.pro­per­ties und fügen dort folgende Zeilen ein:

spring.application.name=zipkin
server.port=9411
logging.level.org.springframework.web=debug

An­schlie­ßend ak­ti­vie­ren Sie in der Java-Datei des Projekts die Server-Kom­po­nen­te:

package spring-boot-tutorial.zipkin;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import zipkin.server.EnableZipkinServer;
@SpringBootApplication
@EnableZipkinServer
public class ZipkinappApplication {
    public static void main(String[] args) {
    SpringApplication.run(ZipkinappApplication.class, args);
    }
}

Erzeugen Sie auf dem gewohnten Wege die aus­führ­ba­re JAR-Datei und führen Sie die Ap­pli­ka­ti­on an­schlie­ßend aus, ist der Zipkin-Server unter der Adresse "http://localhost:9411/zipkin" zu erreichen.

Schritt 6: Spring-Cloud-Zipkin-Ab­hän­gig­keit hin­zu­fü­gen

Fügen Sie eine letzte Ab­hän­gig­keit in der Build-Kon­fi­gu­ra­ti­ons­da­tei hinzu, um Sleuth und Zipkin zu ver­knüp­fen.

Maven:

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-sleuth-zipkin</artifactId>
</dependency>

Gradle:

compile('org.springframework.cloud:spring-cloud-sleuth-zipkin')

Schritt 7: Sleuth-Log-Export auf den Zipkin-Server kon­fi­gu­rie­ren

Erweitern Sie die Java-Datei Ihrer Spring-Boot-Anwendung um das Al­waysSam­pler-Objekt (Bean), um den au­to­ma­ti­schen Export der Sleuth-Logs auf den Zipkin-Server zu ak­ti­vie­ren:

@Bean
public AlwaysSampler defaultSampler() {
    return new AlwaysSampler();
}

Schritt 8: Basis-URL des Zipkin-Servers in „ap­pli­ca­ti­on“-PRO­PER­TIES angeben

Im letzten Schritt geben Sie die Basis-URL des Zipkin-Servers in den Ap­pli­ka­ti­ons-Ei­gen­schaf­ten an, indem Sie ein weiteres Mal die PRO­PER­TIES-Datei Ihres Spring-Boot-Projekts öffnen und folgende Zeile hin­zu­fü­gen:

spring.zipkin.baseUrl = http://localhost:9411/zipkin/
Zum Hauptmenü