Eberhard Wolff innoQ

„Spring Boot besticht vor allem mit dem Umfang der Lösung. Durch die Integration des Spring-Stacks und vieler anderer Technologien gibt es kaum ein Problem, für das Spring Boot nicht eine Lösung vorhält.“

Die Implementierung von Microservices stellt im Vergleich zu monolithischen Anwendungen Entwickler vor einige Herausforderungen. Spezialisierte Technologien wie Spring Boot unterstützen die Umsetzung von Microservices und machen so den Entwicklern das Leben leichter.

Microservices sind ein möglicher Ansatz, um Anwendungen zu modularisieren. Das Besondere: Die Module können unabhängig voneinander in Produktion gebracht werden. Während Module wie Java Packages oder Java-Klassen alle gemeinsam in einem deploybaren Artefakt landen und dann auch gemeinsam in Produktion gebracht werden müssen, ist das bei Microservices anders. Konkret sind Microservices getrennte Prozesse, die als Docker-Container oder eigene virtuelle Maschinen noch weiter gegeneinander isoliert werden können. Sie bieten REST-Services an oder können jeweils einen Teil einer Website implementieren. Letztendlich wird so eine Anwendung in viele Prozesse aufgeteilt. Genau das führt zu einigen Herausforderungen. Während in einer monolithischen Anwendung nur ein Prozess mit einem Build-Projekt umgesetzt werden muss, ist bei Microservices die Anzahl der Projekte wesentlich größer. Also stellt sich eine Frage: Wie aufwendig ist es, ein neues Projekt zu erstellen? Bei Spring Boot ist dafür nicht besonders viel notwendig:

  • Es muss ein Build-Skript geben, geschrieben beispielsweise mit Maven, Gradle oder auch mit Ant.
  • In dem Build-Skript sind nur wenige Einstellungen notwendig. Für Maven ist ein Plug-in und eine Abhängigkeit zu der Bibliothek spring-boot-starter-web notwendig, wenn eine Webanwendung implementiert werden soll. Es gibt zahlreiche weitere Spring Boot Starter für bestimmte Anwendungsarten wie Batches oder Integrationsanwendungen. Diese Starter stellen dann eine vollständige Umgebung bereit, die alle Bibliotheken für eine Anwendung eines bestimmten Typs enthält – also beispielsweise eine Webanwendung.
  • Es sollte eine Java-Klasse geben, die dann das System startet. Listing 1 zeigt ein Beispiel. Mit @RestController wird diese Klasse so markiert, dass sie RESTful-HTTP-Anfragen entgegennehmen kann. @RequestMapping sorgt dafür, dass die Methode auf den Root-URL der Anwendung reagiert. Der String „hello“ wird als Body der HTTP Response zurückgegeben. Alle diese Annotation sind Standard-Spring-Annotation aus dem Spring Framework selbst. @EnableAutoConfiguration ist eine Spring-Boot-Annotation. Sie sorgt dafür, dass eine für die Anwendung passende Umgebung geschaffen wird. Im Beispiel wird ein Servlet-Container und eine Spring-Webumgebung gestartet, da es sich um eine Webanwendung handelt. Das geschieht durch den Code in der main-Methode. Auch dieser Code nutzt Spring-Boot-spezifische Klassen.
@RestController
@EnableAutoConfiguration
public class ControllerAndMain {

  @RequestMapping("/")
  public String hello() {
    return "hello";
  }

  public static void main(String[] args) {
    SpringApplication.run(ControllerAndMain.class, args);
  }
}

Mit Spring Boot ist es also einfach, einen neuen Microservice umzusetzen. Viel weiter lässt sich der Aufwand kaum reduzieren. Irgendein Build ist eigentlich für jede Java-Anwendung notwendig. Viel einfacher als ein Spring Boot Build kann er aber kaum werden. Spring Boot unterstützt auch Groovy. Dann ist kein Build notwendig, und die benötigte Unterstützung ergibt sich aus den Annotationen der Groovy-Klasse.

Den vollständigen Artikel lesen Sie in der Ausgabe:

Java Magazin 6.16 - "Der glückliche Java-Entwickler"

Alle Infos zum Heft
243263Microservice Implementation Assistant: Spring Boot
X
- Gib Deinen Standort ein -
- or -