Für diejenigen, die die Spring Quickstart-Anleitung ausgefüllt haben, diejenigen, die Spring Boot gelernt haben, und diejenigen, die es überprüfen möchten.
Der Beamte ist ein beliebter Reiseführer, probieren Sie es aus! Ich werde mitteilen, was ich durch die Arbeit an Konsumieren eines RESTful-Webdienstes gelernt habe.
Entwicklungsumgebung
Betriebssystem: macOS Mojave Version 10.14.6
Texteditor: Visual Studio Code (im Folgenden VSCode)
Java: 11.0.2
Klicken Sie hier, um eine Übersicht über die Kurzanleitung zu erhalten. Klicken Sie hier, um eine Übersicht über das Erstellen eines RESTful-Webdiensts zu erhalten.
Greifen Sie zunächst auf spring initial izr zu.
Spring Web
hinzu.
2.Artifact, Name geändert in "verbrauchende Ruhe".Klicken Sie dann auf die Schaltfläche "GENERATE", um die Zip-Datei herunterzuladen.
Extrahieren Sie die heruntergeladene Zip-Datei und Sie können loslegen.
Öffnen Sie den vorherigen Ordner mit VS Code. Wir empfehlen, das Java Extension Pack für Erweiterungen zu installieren. Es wird gesagt, dass Sie es installieren sollten.
Erstellen Sie eine Quote.java-Datei in src / main / java / com / example / Consumrestrest /.
Fügen Sie den Code in die Datei Quote.java ein.
Quote.java
package com.example.consumingrest;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
@JsonIgnoreProperties(ignoreUnknown = true)
public class Quote {
private String type;
private Value value;
public Quote() {
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public Value getValue() {
return value;
}
public void setValue(Value value) {
this.value = value;
}
@Override
public String toString() {
return "Quote{" +
"type='" + type + '\'' +
", value=" + value +
'}';
}
}
Wir werden uns eingehender mit dem Code befassen, den wir der Datei Quote.java hinzugefügt haben.
①@JsonIgnoreProperties
Beim Konvertieren eines Java-Objekts in JSON oder beim Empfangen einer JSON-Zeichenfolge und beim Konvertieren in ein Java-Objekt Es ist eine Anmerkung, die mehrere Felder von der Konvertierung ausschließt.
Durch Setzen von "ignoreUnknown = true" können Sie eine Ausnahme verhindern, wenn Sie versuchen, eine undefinierte (zusätzliche) Eigenschaft zu konvertieren und nur Typ und Wert zu konvertieren.
python
private String type;
private Value value;
Deklariert einen Zeichenfolgentyp und eine Wertvariable vom Typ Wert.
Der Zugriffsmodifikator ist "privat", sodass Sie nur innerhalb derselben Klasse ** darauf zugreifen können.
python
//Konstrukteur
public Quote() {
}
//Typ Getter/Setter-Methode
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
//Value Getter/Setter-Methode
public Value getValue() {
return value;
}
public void setValue(Value value) {
this.value = value;
}
Definiert einen Konstruktor ohne Argumente.
Es definiert eine Getter-Methode, um den Wert von Typ und Wert abzurufen, und eine Setter-Methode, um den Wert festzulegen.
④@Override
python
@Override
public String toString() {
return "Quote{" +
"type='" + type + '\'' +
", value=" + value +
'}';
}
Die toString-Methode
ist eine Methode, die eine
Zeichenfolgendarstellung zurückgibt, wie sie in der Klasse java.lang.Object definiert ist.
Die Annotation @ Override
überschreibt die in derObject-Klasse mit dieser Klasse definierte toString-Methode. Es ist eine Anmerkung, um
anzugeben.
Wenn es nicht richtig überschrieben wird, tritt ein Fehler auf. Wenn Sie also einen Tippfehler wie "toStrign ()" machen, wird beim Kompilieren ein Fehler angezeigt, der Sie darüber informiert.
Dieses Mal überschreibe ich es, um eine Zeichenfolge zurückzugeben, um den Typ und den Wert der Übersichtlichkeit halber anzuzeigen.
Quote.java ist jetzt vollständig.
Erstellen Sie eine Value.java-Datei in src / main / java / com / example / Consumrestrest /.
Fügen Sie Code in die Datei Value.java ein.
Value.java
package com.example.consumingrest;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
@JsonIgnoreProperties(ignoreUnknown = true)
public class Value {
private Long id;
private String quote;
public Value() {
}
public Long getId() {
return this.id;
}
public String getQuote() {
return this.quote;
}
public void setId(Long id) {
this.id = id;
}
public void setQuote(String quote) {
this.quote = quote;
}
@Override
public String toString() {
return "Value{" +
"id=" + id +
", quote='" + quote + '\'' +
'}';
}
}
Value.java ist fast dasselbe wie Quote.java.
Ich denke, der Standardzustand ist wie folgt.
ConsumingrestApplication.java
package com.example.consumingrest;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class ConsumingrestApplication {
public static void main(String[] args) {
SpringApplication.run(ConsumingrestApplication.class, args);
}
}
Fügen Sie den Code hinzu, während Sie sich auf die Formel beziehen.
ConsumingrestApplication.java
package com.example.consumingrest;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
//Code hinzugefügt
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.web.client.RestTemplateBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.web.client.RestTemplate;
@SpringBootApplication
public class ConsumingrestApplication {
//Code hinzugefügt
private static final Logger log = LoggerFactory.getLogger(ConsumingrestApplication.class);
public static void main(String[] args) {
SpringApplication.run(ConsumingrestApplication.class, args);
}
//Code hinzugefügt
@Bean
public RestTemplate restTemplate(RestTemplateBuilder builder) {
return builder.build();
}
//Code hinzugefügt
@Bean
public CommandLineRunner run(RestTemplate restTemplate) throws Exception {
return args -> {
Quote quote = restTemplate.getForObject(
"https://gturnquist-quoters.cfapps.io/api/random", Quote.class);
log.info(quote.toString());
}
}
Wir werden uns eingehender mit dem Code befassen, den wir der Datei ConsumingrestApplication.java hinzugefügt haben.
python
private static final Logger log = LoggerFactory.getLogger(ConsumingrestApplication.class);
Logger und LoggerFactory werden verwendet, um das Protokoll im Terminal anzuzeigen. Sie können das Protokoll abrufen, indem Sie die Klasse im Argument "LoggerFactory.getLogger ()" angeben.
②RestTemplate
python
//Code hinzugefügt
@Bean
public RestTemplate restTemplate(RestTemplateBuilder builder) {
return builder.build();
}
RestTemplate ist eine HTTP-Clientklasse, die Methoden zum Aufrufen von REST-APIs (Web-APIs) bereitstellt. Dieses Mal senden wir eine GET-Anfrage an die URL und speichern damit den Inhalt der Zielantwort in Quote.class.
Es wird im DI-Container mit den Anmerkungen "@ Bean" und "RestTemplateBuilder" registriert. Die Bean-Registrierung ist eine Anmerkung, mit der verschiedene Einstellungen von Spring für Java-Code vorgenommen werden können. Sie müssen "@ Configuration" hinzufügen, dies ist jedoch in der Annotation "@ SpringBootApplication" enthalten.
③CommandLineRunner
python
//Code hinzugefügt
@Bean
public CommandLineRunner run(RestTemplate restTemplate) throws Exception {
return args -> {
Quote quote = restTemplate.getForObject(
"https://gturnquist-quoters.cfapps.io/api/random", Quote.class);
log.info(quote.toString());
}
CommandLineRunner
ist eine funktionale Schnittstelle mit einer Methode namens run.
Daher wird hier die Ausführungsmethode überschrieben.
Spring Boot ruft es nach dem Ausführen der App auf.
Als Verarbeitungsablauf Das Ergebnis von "restTemplate.getForObject ()" wird der Anführungszeichenvariablen vom Typ "Anführungszeichen" zugewiesen. Die URL zum Senden der GET-Anforderung wird im ersten Argument angegeben, und die Klasse zum Speichern des Inhalts der Antwort des Ziels wird im zweiten Argument angegeben.
Danach wird die in ① definierte info-Methode des Protokolls und darin die toString-Methode der Quote-Klasse aufgerufen.
Nachdem die Anwendung nun ausgeführt werden kann, überprüfen wir sie.
Geben Sie den folgenden Befehl in das Terminal ein und drücken Sie die Eingabetaste.
Terminal
$ ./mvnw spring-boot:run
Nach einer Weile erscheinen die folgenden Zeichen im Terminal.
Terminal
Quote{type='success', value=Value{id=12, quote='@springboot with @springframework is pure productivity! Who said in #java one has to write double the code than in other langs? #newFavLib'}}
Diese ID und dieses Anführungszeichen werden zufällig geschrieben. Wenn Sie also die Anwendung stoppen und den Befehl execute erneut im Terminal eingeben.
Terminal
Quote{type='success', value=Value{id=4, quote='Previous to Spring Boot, I remember XML hell, confusing set up, and many hours of frustration.'}}
Es hat eine andere ID und ein anderes Zitat als zuvor.
RestTemplate CommandLineRunner ** Unbekannte Eigenschaften beim Deserialisieren mit Jackson ignorieren ** ** DI verstehen ** ** Machen Sie sich ein Bild von Spring's DI-Container ** ** Erstellen einer einfachen Befehlszeilenanwendung mit Spring Boot **