RestTemplate ist ein von Spring für den Zugriff auf REST -Dienste bereitgestellte Kunde. RestTemplate bietet eine Vielzahl von bequemen Möglichkeiten zum Zugriff auf Remote -HTTP -Dienste, die die Schreibeffizienz des Kunden erheblich verbessern können. Im vorherigen Blog wurde der Jersey -Kunde im vorherigen Blog //www.vevb.com/article/132885.htm verwendet, um den erholsamen Service zu implementieren, der Spring Boot verbraucht. Als nächstes verwenden wir RastTemplate, um den erholsamen Dienst im vorherigen Beispiel zu konsumieren. Das vorherige Beispiel:
Springboot integriert die H2 -Speicherdatenbank, um Unit -Tests und Datenbank -Irrelevanz zu erreichen
RESTful -Dienste, die in diesem Beispiel bereitgestellt werden, sind wie folgt: http: // localhost: 7900/user/1
{"ID": 1, "Benutzername": "User1", "Name": "Zhang San", "Alter": 20, "Balance": 100.00}
Die POM -Dateiabhängigkeiten sind wie folgt:
<? 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> <gruppe <Groupid> com.chhliu.sping.restful: <artifactId> Springboot-REST-TEMPLATE </artifactId> <version> 0.0.1-Snapshot </Version> <Packages> jar </packaging> <name> Springboot-rest-template </name> <Bection> Demo-Projekt für Spring Boot Resttemplate </Beschreibung> <Potents> <Crogs> org.sPlamework. <artifactid> Spring-Boot-Starter-Parent </artifactId> <version> 1.4.3.Release </Version> <RelativePath/> <!-SOOKUP PORTER von repository-> </parent> <properties> <project.build.sourceencoding> utf-8 </project.build.surecoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <java.version>1.7</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <Depopentcy> <GroupId> org.springFramework.boot </GroupId> <artifactId> Spring-Boot-Starter-Test </artifactID> <Schops> Test </scope> </abhängig> <!-Hot Boot, Hot-Deployment-Abhängigkeitspaket für Debugging, addiert dieses Paket. <artifactId> Spring-Boot-Devtools </artifactId> <Optional> True </optional> </abhängig> </abhängigkeiten> <builds> <plugins> <plugin> <plugin> <gruppe-org. </project>
Da wir die entsprechende JSON -Zeichenfolge in ein Benutzerobjekt konvertieren müssen, nachdem wir RastTemplate verwendet haben, um den RESTful -Dienst aufzurufen, müssen wir diese Klasse wie folgt in das Projekt kopieren:
Paket com.chhliu.springboot.restful.vo; import Java.math.bigdecimal; Public Class User {private long id; privater String -Benutzername; privater Zeichenfolge Name; Privates kurzes Alter; privates Bigdecimal -Gleichgewicht; // ... Getter- und Setter-Methoden auslassen/ ** * Achtung: * Details: Todo * @author chhliu * Erstellungszeit: 2017-1-20 2:05:45 PM * @Return */ @Override public String toString () {return "user [id =" + id +, username = "username =" username = ", username +", username + ", username +", username + ", username +", username + ", username +", username + ", username +", username + ", username +", username + ", name =" "]"; }} Paket com.chhliu.springboot.restful.controller; import org.springframework.beans.factory.annotation.autowired; import org.springframework.web.bind.annotation.getMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.restController; import org.springframework.web.client.restTemplate; import com.chhliu.springboot.restful.vo.user; @RestController Public Class RestTemPlateController {@autowired private rastTemplate rastTemplate; @Getmapping ("/template/{id}") public user findById (@PathVariable Long id) {// http: // localhost: 7900/user/ist die entsprechende URL des vorherigen Service -Benutzers u = this.restTemplate.getforobject ("http: // localHost: 7900/user/user/user/user. System.out.println (u); kehre u zurück; }} Paket com.chhliu.springboot.restful; import org.springframework.beans.factory.annotation.autowired; import org.springframework.boot.springApplication; import org.springframework.boot.autoconfigure.springbootApplication; import org.springframework.boot.web.client.restTemplateBuilder; import org.springframework.context.annotation.bean; import org.springframework.web.client.restTemplate; @SpringBootApplication Public Class SpringbootrestTemplateApplication {// Seien Sie vorsichtig, wenn wir das beginnen, weil wir RastTemplate in den Controller injizieren, müssen wir eine Instanz der Klasse instanziieren, wenn wir @Autowered private rastTemplateBuilder Builder starten. // RastTemplateBuilder verwenden, um das RastTemplate -Objekt zu instanziieren. Spring hat die restTemplate -Instanz standardmäßig @Bean public rastTemplate rastTemplate () {return Builder.build () injiziert; } public static void main (String [] args) {SpringApplication.run (SpringbootrestTemPlateApplication.class, Args); }} Geben Sie: http: // localhost: 7902/template/1 in Ihrem Browser
Die Testergebnisse sind wie folgt:
Konsolendruckergebnisse:
Benutzer [id = 1, userername = user1, name = zhang san, Alter = 20, balance = 100,00]
Während des obigen Tests wird gezeigt, dass wir den Spring Boot RESTful -Service erfolgreich bezeichnet haben.
Es gibt eine sehr schlechte Sache im obigen Test.
Benutzer u = this.restTemplate.getForObject ("http: // localhost: 7900/user/" + id, user.class); Harter Code erscheint hier. Wenn sich die Serveradresse ändert, muss der entsprechende Code geändert werden, und eine verbesserte Methode ist erforderlich, um die Adresse des erholsamen Dienstes in die Konfigurationsdatei zu schreiben.
Ändern Sie den Controller wie folgt:
Paket com.chhliu.springboot.restful.controller; import org.springframework.beans.factory.annotation.autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.web.bind.annotation.getMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.restController; import org.springframework.web.client.restTemplate; import com.chhliu.springboot.restful.vo.user; @RestController Public Class RestTemPlateConTroller {@Autowired Private rastTemplate rastTemplate; // Die URL -Adresse entspricht dem erholsamen Service @Value ("$ {user.userServicePath}") private String -UserServicePath; @Getmapping ("/template/{id}") public user findById (@PathVariable Long id) {user u = this.restTemplate.getForObject (this.userServicePath + id, user.class); System.out.println (u); kehre u zurück; }}Die Konfigurationsdatei wird wie folgt geändert:
server.port: 7902 user.userServicePath = http: // localhost: 7900/user/
Starten Sie das Programm:
Ich fand, dass der Test in Ordnung ist. Später werden wir Spring Cloud einführen, um diese aufrufende Methode weiter zu verbessern!
Das obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, es wird für das Lernen aller hilfreich sein und ich hoffe, jeder wird Wulin.com mehr unterstützen.