In der Java-Welt gibt es ein Framework welches sich Spring nennt und sicher grosser Beliebtheit erfreut. Das Problem ist, dass der Konfigurationsaufwand sehr gross ist.

Wie oben schon erwähnt ist Spring in der Java-Welt sehr weit verbreitet und vor allem wird die Dependency Injection sehr geschätzt. Doch ist die Konfiguration sehr gross und mühsam.

Aus diesem Grund wurde Spring Boot ins Leben gerufen. Auf start.spring.io oder in Intellij kann per Klicks ein neues Projekt erstellt werden. Diese Tools erstellen nichts anderes als eine Main-Klasse mit Spring Boot als Dependency.

Leeres Spring Boot Projekt

Geht man auf die Seite start.spring.io und wählte ohne weitere Konfiguration „Generate Project“ aus, wird ein Projekt-Grundgerüst erstellt. Wenn dieses genauer untersucht wird, kommt schnell die Feststellung, dass das Grundgerüst gar nicht so gross ist.

Untersucht man im neu generierten Projekt das „pom.xml“ wird folgendes darin stehen.

Es werden zwei Dependencies eingefügt:

  • spring-boot-starter
  • spring-boot-starter-test

Ausserdem wird für Maven ein Plugin eingebunden um das Projekt mit Maven zu starten und zu builden. Mehr wird nicht benötigt. Um eine Spring Boot-Applikation zu starten braucht es eine Main-Klasse welche mit der Annotation „ @SpringBootApplication “ .

Diese Annotation führt folgendes aus:

@SpringBootApplication is a convenience annotation that adds all of the following:

@Configuration tags the class as a source of bean definitions for the application context.
@EnableAutoConfiguration tells Spring Boot to start adding beans based on classpath settings, other beans, and various property settings.
Normally you would add @EnableWebMvc for a Spring MVC app, but Spring Boot adds it automatically when it sees spring-webmvc on the classpath. This flags the application as a web application and activates key behaviors such as setting up a DispatcherServlet.
@ComponentScan tells Spring to look for other components, configurations, and services in the hello package, allowing it to find the controllers.

Link: https://spring.io/guides/gs/spring-boot/

Spring Boot Erweitern

Der Fokus von Spring Boot liegt dabei möglichst schnell eine Instanz zu erstellen mit der entwickelt werden kann. Damit bekannte Systeme und Frameworks leicht eingebunden werden können wurden viele Maven-Repositories erstellt, welche auf Spring Boot angepasst wurden.

Diese sucht können im Spring Initializr ausgewählt werden. Damit wird nur ein Eintrag im „pom.xml“ gemacht mit dem entsprechenden Maven-Package.

Im Intellij:

Auf start.spring.io

„Switch to the full verison“ auswählen.

hier können die gewünschten Packages ausgewählt werden. Danach wird wie im leeren Projekt eine Projektstruktur erstellt und die ausgewählten Dependencies werden ins „pom.xml“ geschrieben. Diese Packages nehmen eine grossen teil der Konfiguration ab, jedoch nicht alles. Beispielsweise muss beim MySQL-Driver an irgendeiner Stelle die IP-Adresse und der Benutzername konfiguriert werden können. Dies geschieht in den meisten Fällen in dem File „application.properties“.  Anbei eine Beispielskonfiguration von MySQL:

Link: https://spring.io/guides/gs/accessing-data-mysql/

Dies erspart oder ersetzt ganz den Aufwand eines Projekt-Setups. Damit wird der Fokus auf die Entwicklung gesetzt.

Zwei der wichtigsten Dependencies sind wohl die „Web“ und „Restful Webservices“. Mit der ersten kann eine lauffähige Spring-MVC-Applikation erstellt werden. Mit Restful Webservices kann, wie der Name vermuten lässt, eine REST-Schnittstelle bauen, welche JSON-Daten zurück liefert.

Testing

Im Projekt wird automatisch auch ein ein Test-Package erstellt. Dort können normale JUnit tests geschrieben werden. Falls der Spring Context benötigt wird (Bsp. SQL Datenbank wird benötigt), kann die Testklasse mit zusätzlichen Annotationen ausgestattet werden.

  • @RunWith(SpringRunner.class)
  • @SpringBootTest

Diese können entweder im Intellij laufen gelassen werden oder mit dem Maven:  mvn test .

 

Dieser Artikel soll zeigen, wie einfach es ist eine Spring Boot Applikation zu erstellen und somit eine stehende Spring-Entwicklungsumgebung zu erschaffen.