Für Leute, die Spring Boot von Grund auf neu starten, werde ich einen Artikel mit dem Ziel schreiben, etwas zu bewegen, wenn ich es vorerst kopiere. Es basiert auf dem grundlegenden Erstellen eines RESTful-Webdienstes.
$ sw_vers
ProductName: Mac OS X
ProductVersion: 10.14.3
BuildVersion: 18D109
$ mvn --version
Apache Maven 3.6.0 (97c98ec64a1fdfee7767ce5ffb20918da4f719f3; 2018-10-25T03:41:47+09:00)
Maven home: /usr/local/Cellar/maven/3.6.0/libexec
Java version: 1.8.0_25, vendor: Oracle Corporation, runtime: /Library/Java/JavaVirtualMachines/jdk1.8.0_25.jdk/Contents/Home/jre
Default locale: ja_JP, platform encoding: UTF-8
OS name: "mac os x", version: "10.14.3", arch: "x86_64", family: "mac"
$
Es ist ein sogenannter normaler Mac, aber wenn Sie Maven haben, können Sie ihn unter Windows fast genauso ausführen.
Wir werden auch mit Curl kommunizieren.
$ curl --version
curl 7.54.0 (x86_64-apple-darwin18.0) ...
$
Kopieren Sie zunächst pom.xml aus dem Folgenden.
$ mkdir myproject && cd $_
$ cat pom.xml
pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.example</groupId>
<artifactId>myproject</artifactId>
<version>0.0.1-SNAPSHOT</version>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.3.RELEASE</version>
</parent>
<!-- Additional lines to be added here... -->
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
<!-- (you don't need this if you are using a .RELEASE version) -->
<repositories>
<repository>
<id>spring-snapshots</id>
<url>https://repo.spring.io/snapshot</url>
<snapshots><enabled>true</enabled></snapshots>
</repository>
<repository>
<id>spring-milestones</id>
<url>https://repo.spring.io/milestone</url>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>spring-snapshots</id>
<url>https://repo.spring.io/snapshot</url>
</pluginRepository>
<pluginRepository>
<id>spring-milestones</id>
<url>https://repo.spring.io/milestone</url>
</pluginRepository>
</pluginRepositories>
<properties>
<java.version>1.8</java.version>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
Erstellen Sie ein Verzeichnis, in dem Sie die Quell- und Eigenschaftendateien ablegen.
$ mkdir -p src/main/java
$ mkdir -p src/main/resources
Erstellen Sie eine Datei, die von der Magie geschrieben wurde, mit der Spring Boot gestartet wird.
$ cat src/main/java/nu/mine/kino/springboot/SampleTomcatApplication.java
SampleTomcatApplication.java
package nu.mine.kino.springboot;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class SampleTomcatApplication {
public static void main(String[] args) {
SpringApplication.run(SampleTomcatApplication.class, args);
}
}
Erstellen Sie den folgenden Controller, der die WEB-Funktion beschreibt.
$ cat src/main/java/nu/mine/kino/springboot/GreetingController.java
GreetingController.java
package nu.mine.kino.springboot;
import java.util.concurrent.atomic.AtomicLong;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class GreetingController {
private static final String template = "Hello, %s!";
private final AtomicLong counter = new AtomicLong();
@RequestMapping("/greeting")
public Greeting greeting(
@RequestParam(value = "name", defaultValue = "World") String name) {
return new Greeting(counter.incrementAndGet(),
String.format(template, name));
}
}
class Greeting {
private final long id;
private final String content;
public Greeting(long id, String content) {
this.id = id;
this.content = content;
}
public long getId() {
return id;
}
public String getContent() {
return content;
}
}
Erstellen Sie eine Eigenschaftendatei, die Ihre Einstellungen beschreibt.
$ cat src/main/resources/application.properties
application.properties
server.compression.enabled: true
server.compression.min-response-size: 1
server.connection-timeout=5000
server.port=8080
server.address=0.0.0.0
server.port ist die zu startende Portnummer. Wenn der Standardwert 8080 akzeptabel ist, ist tatsächlich keine Beschreibung erforderlich. server.address ist ein Zauberspruch, um eine Verbindung von anderen Computern herzustellen.
Fangen wir an.
$ pwd
/xxxxx/xxx/myproject
$ mvn spring-boot:run
Verschiedene Dinge werden angezeigt,
...
2019-02-26 14:03:46.797 INFO 40644 --- [ main] n.m.k.s.SampleTomcatApplication :
Started SampleTomcatApplication in 4.749 seconds (JVM running for 11.845)
Es ist in Ordnung!
Versuchen Sie nach dem Start, über eine andere Eingabeaufforderung zu kommunizieren.
$ curl http://localhost:8080/greeting
{"id":1,"content":"Hello, World!"}
$
Es hat so gut funktioniert!
Stoppen Sie den Spring Boot WEB-Server (Tomcat), den Sie mit Strg-C gestartet haben. Danke für Ihre Unterstützung.
$ mvn clean package
Jetzt haben Sie eine ausführbare JAR-Datei, die Tomcat enthält.
$ java -jar target/myproject-0.0.1-SNAPSHOT.jar
Auf diese Weise startet Tomcat auf die gleiche Weise wie der vorherige mvn spring-boot: run
. ..
$ mvn eclipse:clean eclipse:eclipse
Nachdem Sie eine .project / .classpath-Datei haben, können Sie diese in Eclipse importieren.
Fügen Sie application.properties die folgenden Einstellungen hinzu.
$ cat src/main/resources/application.properties
application.properties
...
spring.jackson.serialization.indent-output=true
Strg-C, neu starten mit mvn spring-boot: run
und dann mit curl verbinden ...
$ curl http://localhost:8080/greeting
{
"id" : 1,
"content" : "Hello, World!"
}
Der JSON wurde formatiert. ..
Recommended Posts