RestTemplate es un cliente proporcionado por Spring para acceder a los servicios de descanso. RestTemplate proporciona una variedad de formas convenientes de acceder a los servicios HTTP remotos, lo que puede mejorar enormemente la eficiencia de escritura del cliente. En el blog anterior, //www.vevb.com/article/132885.htm, el cliente de Jersey se ha utilizado para implementar el servicio RESTful que consume arranque de primavera. A continuación, usamos RestTemplate para consumir el servicio RESTFUL en el ejemplo anterior. El ejemplo anterior:
SpringBoot integra la base de datos de memoria H2 para lograr pruebas unitarias e irrelevancia de la base de datos
Los servicios RESTful proporcionados por este ejemplo son los siguientes: http: // localhost: 7900/usuario/1
{"id": 1, "nombre de usuario": "user1", "nombre": "zhang san", "edad": 20, "balance": 100.00}
Las dependencias del archivo de POM son las siguientes:
<? xml versión = "1.0" encoding = "utf-8"?> <Project xmlns = "http://maven.apache.org/pom/4.0.0" xmlns: xsi = "http://www.w3.org/2001/xmlschemainstance" 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> <grupo> com.chhliu.springboot.restful </group <AtifactId> springboot-rest-template </artifactid> <versión> 0.0.1-snapshot </versewer> <compackaging> jar </paquete> <name> springboot-rest-template </name> <solding> Proyecto de demostración para el arranque de la primavera RESTTEMPLATE </descripción> <entremid> órgano> org.springframe <artifactid> Spring-Boot-Starter-Parent </artifactid> <versión> 1.4.3.release </versewer> <relativePath/> <!-Buscar padres desde repositorio-> </parent> <properties> <proyect.build.sourceEncoding> utf-8 </project.build.sourceodinging <Project.Reporting.outputencoding> UTF-8 </project.rePorting.outputEncoding> <java.version> 1.7 </Java.version> </propiety> <pendencies> <pendency> <proupid> org.springFrame.Boot </groupId> <Atifactid> Spring-boot-sharter-web </artid-wheb </artidm <Spendency> <ProupId> org.springframework.boot </groupid> <artifactID> spring-boot-starter-test </arfactid> <cope> test </scope> </dependency> <!-Boot de hot de la implementación de la implementación de la dependencia del paquete, para la comodidad de depuración, agrega este paquete-> <defepentency> <MoupRid> org.springFrame Work. <artifactId>spring-boot-devtools</artifactId> <optional>true</optional> </dependency> </dependencies> <build> <plugins> <plugin> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </ject>
Dado que necesitamos convertir la cadena JSON correspondiente en un objeto de usuario después de usar RestTemplate para llamar al servicio RESTFUL, debemos copiar esta clase al proyecto, de la siguiente manera:
paquete com.chhliu.springboot.restful.vo; import java.math.bigdecimal; Usuario de clase pública {ID de largo privado; nombre de usuario de cadena privada; nombre de cadena privada; edad privada corta; Balance privado de BigDecimal; // ... omitir los métodos de Getter y Setter/ ** * Atención: * Detalles: TODO * @Author Chhliu * Tiempo de creación: 2017-1-20 2:05:45 pm * @return */ @Override public String toString () {return "user [id =" + id + ", username =" + useame + " + name +", Age = "" "]"; }} paquete com.chhliu.springboot.restful.controller; importar org.springframework.beans.factory.annotation.aUtowired; importar org.springframework.web.bind.annotation.getMapping; importar org.springframework.web.bind.annotation.pathvariable; importar org.springframework.web.bind.annotation.restController; importar org.springframework.web.client.resttemplate; import com.chhliu.springboot.restful.vo.user; @RestController Class public ResttEmplateController {@aUtoWired private RestTemplate RestTemplate; @GetMapping ("/Template/{id}") Public User FindById (@PathVariable Long Id) {// http: // localhost: 7900/user/es la URL correspondiente del usuario anterior User u = this.resttemplate.getforObject ("http: // localhost: 7900/user/" + id, user.cless); System.out.println (U); devolver u; }} paquete com.chhliu.springboot.restful; importar org.springframework.beans.factory.annotation.aUtowired; importar org.springframework.boot.springapplication; importar org.springframework.boot.autoconfigure.springbootapplication; importar org.springframework.boot.web.client.resttemplateBuilder; importar org.springframework.context.annotation.bean; importar org.springframework.web.client.resttemplate; @SpringBootApplication Clase pública SpringBootrestTemplataApplication {// Tenga cuidado al comenzar eso porque inyectamos RestTemplate en el controlador, necesitamos instanciar una instancia de la clase al comenzar el constructor privado ResttEmplateBuilder privado de @aUtowired; // Use ResttEmplateBuilder para instanciar el objeto RestTemplate. Spring ha inyectado la instancia de RESTTemplate por defecto @Bean public RestTemplate RestTemplate () {return Builder.Build (); } public static void main (string [] args) {springapplication.run (springbootresttemplataApplication.class, args); }} Ingrese: http: // localhost: 7902/plantplate/1 en su navegador
Los resultados de la prueba son los siguientes:
Resultados de la impresión de la consola:
Usuario [id = 1, userName = user1, name = zhang san, edad = 20, balance = 100.00]
A través de la prueba anterior, se muestra que hemos llamado con éxito el servicio Restful Spring Boot.
Hay algo muy malo en la prueba anterior.
Usuario u = this.resttemplate.getForObject ("http: // localhost: 7900/user/" + id, user.class); El código duro aparece aquí. Cuando la dirección del servidor cambia, se debe cambiar el código correspondiente y se requiere un método mejorado para escribir la dirección del servicio RESTFUL en el archivo de configuración.
Modifique el controlador de la siguiente manera:
paquete com.chhliu.springboot.restful.controller; importar org.springframework.beans.factory.annotation.aUtowired; importar org.springframework.beans.factory.annotation.value; importar org.springframework.web.bind.annotation.getMapping; importar org.springframework.web.bind.annotation.pathvariable; importar org.springframework.web.bind.annotation.restController; importar org.springframework.web.client.resttemplate; import com.chhliu.springboot.restful.vo.user; @RestController Class public ResttEmplateController {@aUtoWired private RestTemplate RestTemplate; // La dirección de URL correspondiente al servicio RESTFUL @Value ("$ {user.userservicePath}") privado String UserServicePath; @GetMapping ("/Template/{id}") Usuario público FindById (@PathVariable Long ID) {user u = this.resttemplate.getForObject (this.UserservicePath + id, user.class); System.out.println (U); devolver u; }}El archivo de configuración se modifica de la siguiente manera:
Server.port: 7902 user.userservicePath = http: // localhost: 7900/user/
Inicie el programa:
Descubrí que la prueba está bien. ¡Más tarde, presentaremos Spring Cloud para mejorar aún más este método de llamadas!
Lo anterior es todo el contenido de este artículo. Espero que sea útil para el aprendizaje de todos y espero que todos apoyen más a Wulin.com.