Hello World Projekt mit Spring 3
Quelle
Dieses Kapitel bezieht sich auf diese Anleitung
Spring mit IntelliJ 4
Wenn man in Spring ein Projekt importiert, muss man entweder das pom.xml oder das build.gradle-File von Gradle auswählen. Für ein neues Projekt gibt es bereits vorinstallierte Templates in IntelliJ.
Maven
Welche Dependencies im Maven-Pom-File hinzugefügt werden müssen, sieht man auf diesem Tutorial
Mit Spring Boot wird statt mehreren Jar's ein einzelnes Jar erstellt.
Der Webcontroller
In Spring werden alle HTTP-Anfragen von einem Controller verarbeiten. Haben die Annotation
@Controller
Hier ein Beispiel für einen GreetingController
package hello;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
@Controller
public class GreetingController {
@RequestMapping("/greeting")
public String greeting(@RequestParam(value="name", required=false, defaultValue="World") String name, Model model) {
model.addAttribute("name", name);
return "greeting";
}
}
Alle Requests auf '/greeting' werden an diesen Controller geschickt.
The above example does not specify GET vs. PUT, POST, and so forth, because @RequestMapping maps all HTTP operations by default. Use @RequestMapping(method=GET) to narrow this mapping. 4
Der Query-String wird mit dem Parameter name an die Funktion mitgegeben. Weil der String nicht zwingend erforderlich ist, kann er auch einen default-Wert haben, in disem Fall "World".
Im Inneren der Methode wird mit Thymeleaf eine view-Technologie eingesetzt, welche dafür zuständig ist, den HTMl-Code auf dem Server vorzubereiten.
Das HTML Template
Im Beispiel oben hat man gesehen, das der Controller den Inhalt einer HTML-Seite manipuliert. Ein solches HTML-Template kann zum Beispiel folgendermassen aussehen:
<!DOCTYPE HTML>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<title>Getting Started: Serving Web Content</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
<p th:text="'Hello, ' + ${name} + '!'" />
</body>
</html>
Ausführen der Applikation
Bei Boot gibt es ein Package namens spring-boot-devtools, dass sich um häufige Aufgaben wie das Neuladen von Seiten im Browser kümmert.
http://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#using-boot-devtools
So sieht dann die Javaklasse mit der Main-Methode aus:
package hello;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
Die SpringBootApplication-Annotation ist eine Zusammenfassung für mehrere einzelne Annotationen: 4
@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 the hello package, allowing it to find the HelloController.
Ein .jar erstellen
Um aus dem Code eine Applikation zu erstellen, welche an den Kunden geschickt werden kann, wird in der Regel eine .jar-Datei erzeugt.
So wird die Applikation gestartet:
java -jar build/libs/gs-serving-web-content-0.1.0.jar
So wird ein JAR-File erstellt:
./mvnw clean package
So wird das JAR ausgeführt:
java -jar target/gs-serving-web-content-0.1.0.jar
Alternativ kann auch ein .war-File erzeugt werden
Die App ausprobieren
Die Applikation ist unter dem folgenden Link verfügbar:
http://localhost:8080/greeting
Man kann der Applikation auch einen Namen als Parameter mitgeben:
http://localhost:8080/greeting?name=User
Als 'Startseite' könnte auch ein index.html eingesetzt werden.
Quellen
2. Frank-Rahn.de ↩
3. Spring.io ↩
4. Spring.io ↩