Pour ceux qui ont fini de travailler sur Spring Quickstart Guide, ceux qui ont commencé à apprendre Spring Boot et ceux qui veulent revoir
Le fonctionnaire est un guide populaire, alors essayez-le! Je partagerai ce que j'ai appris en travaillant réellement sur Consommer un service Web RESTful.
Environnement de développement
Système d'exploitation: macOS Mojave version 10.14.6
Éditeur de texte: Visual Studio Code (ci-après VSCode)
Java: 11.0.2
Cliquez ici pour consulter le guide de démarrage rapide Cliquez ici pour un examen de la création d'un service Web RESTful
Tout d'abord, accédez à spring initial izr.
Spring Web
.
2.Artéfact, le nom a été changé en «repos consommant».Cliquez ensuite sur le bouton GENERATE
pour télécharger le fichier Zip.
Extrayez le fichier Zip téléchargé et vous êtes prêt à partir.
Ouvrez le dossier précédent avec VS Code. Nous vous recommandons d'installer le Java Extension Pack pour les extensions. Il est dit que vous devez l'installer.
Créez un fichier Quote.java dans src / main / java / com / example / consumerrest /.
Ajoutez le code dans le fichier Quote.java.
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 +
'}';
}
}
Nous approfondirons le code que nous avons ajouté au fichier Quote.java.
①@JsonIgnoreProperties
Lors de la conversion d'un objet Java en JSON, ou lors de la réception d'une chaîne JSON et de sa conversion en un objet Java Il s'agit d'une annotation qui exclut plusieurs champs de la conversion.
En définissant ʻignoreUnknown = true`, vous pouvez empêcher une exception lors de la tentative de conversion d'une propriété non définie (supplémentaire), et ne convertir que le type et la valeur.
python
private String type;
private Value value;
Déclare un type de type chaîne et une variable de valeur de type Value.
Le modificateur d'accès est private
, vous ne pouvez donc y accéder qu'à partir de la même classe **.
python
//constructeur
public Quote() {
}
//getter de type/Méthode Setter
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
//getter de valeur/Méthode Setter
public Value getValue() {
return value;
}
public void setValue(Value value) {
this.value = value;
}
Définit un constructeur sans argument.
Il définit une méthode getter pour obtenir la valeur de type et value, et une méthode setter pour définir la valeur.
④@Override
python
@Override
public String toString() {
return "Quote{" +
"type='" + type + '\'' +
", value=" + value +
'}';
}
La méthode toString
est une méthode qui renvoie une
représentation sous forme de chaîne telle que définie dans la classe java.lang.Object.
L'annotation @ Override
remplace la méthode toString définie dans la classe ʻObject avec cette classe. C'est une annotation pour spécifier `.
S'il n'est pas remplacé correctement, une erreur se produira.
Par conséquent, si vous faites une faute de frappe comme toStrign ()
, une erreur se produira au moment de la compilation et elle vous le dira.
Cette fois, je le remplace pour renvoyer une chaîne pour afficher le type et la valeur pour plus de clarté.
Quote.java est maintenant terminé.
Créez un fichier Value.java dans src / main / java / com / example / consumerrest /.
Ajoutez du code dans le fichier Value.java.
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 est presque identique à Quote.java.
Je pense que l'état par défaut est le suivant.
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);
}
}
Ajoutez le code en vous référant à la formule.
ConsumingrestApplication.java
package com.example.consumingrest;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
//Code ajouté
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 ajouté
private static final Logger log = LoggerFactory.getLogger(ConsumingrestApplication.class);
public static void main(String[] args) {
SpringApplication.run(ConsumingrestApplication.class, args);
}
//Code ajouté
@Bean
public RestTemplate restTemplate(RestTemplateBuilder builder) {
return builder.build();
}
//Code ajouté
@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());
}
}
Nous approfondirons le code que nous avons ajouté au fichier ConsumingrestApplication.java.
python
private static final Logger log = LoggerFactory.getLogger(ConsumingrestApplication.class);
Logger et LoggerFactory sont utilisés pour afficher le journal dans le terminal.
Vous pouvez obtenir le journal en spécifiant la classe dans l'argument de LoggerFactory.getLogger ()
.
②RestTemplate
python
//Code ajouté
@Bean
public RestTemplate restTemplate(RestTemplateBuilder builder) {
return builder.build();
}
RestTemplate est une classe de client HTTP qui fournit des méthodes pour appeler les API REST (API Web). Cette fois, nous enverrons une requête GET à l'URL et l'utiliserons pour stocker le contenu de la réponse de destination dans Quote.class.
Il est enregistré dans le conteneur DI à l'aide de l'annotation «@ Bean» et «RestTemplateBuilder».
L'enregistrement Bean est une annotation qui permet d'effectuer divers paramètres de Spring sur du code Java.
Vous devez ajouter @ Configuration
, mais il est inclus dans l'annotation @ SpringBootApplication
.
③CommandLineRunner
python
//Code ajouté
@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
est une interface fonctionnelle avec une méthode appelée run.
Par conséquent, ici, la méthode d'exécution est remplacée.
Spring Boot l'appellera après avoir exécuté l'application.
En tant que flux de traitement,
Le résultat de restTemplate.getForObject ()
est assigné à la variable quote de type Quote.
L'URL pour envoyer la requête GET est spécifiée dans le premier argument et la classe pour stocker le contenu de la réponse de la destination est spécifiée dans le second argument.
Après cela, la méthode info du journal définie dans ① est appelée et la méthode toString de la classe Quote y est appelée.
Maintenant que l'application est prête à fonctionner, vérifions.
Entrez la commande suivante dans le terminal et appuyez sur Entrée.
Terminal
$ ./mvnw spring-boot:run
Après un certain temps, les caractères suivants apparaîtront dans le 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'}}
Cet identifiant et cette citation sont écrits de manière aléatoire, donc si vous arrêtez l'application et entrez à nouveau la commande d'exécution dans le terminal.
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.'}}
Il a un identifiant et une citation différents des précédents.
RestTemplate CommandLineRunner ** Ignorer les propriétés inconnues lors de la désérialisation avec jackson ** ** Comprendre DI ** ** Saisissons l'image d'opération (atmosphère) du conteneur DI de Spring ** ** Créer une application de ligne de commande simple avec Spring Boot **
Recommended Posts