Resttemplate - это клиент, предоставленный весной для доступа к службам REST. Resttemplate предоставляет множество удобных способов доступа к удаленным услугам HTTP, что может значительно повысить эффективность написания клиента. В предыдущем блоге, //www.vevb.com/article/132885.htm, клиент Джерси использовался для реализации услуг Restful, который потребляет Spring Boot. Далее мы используем Resttemplate, чтобы потреблять услугу Restful в предыдущем примере. Предыдущий пример:
Springboot интегрирует базу данных памяти H2 для достижения модульных тестов и нерелевантности базы данных
Услуги RESTFUL, предоставленные этим примером, следующие: http: // localhost: 7900/user/1
{"id": 1, "username": "user1", "name": "Zhang San", "Возраст": 20, "Баланс": 100.00}
Зависимости от файлов POM следующие:
<? 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"> <dolidyversion> 4.0.0 </modelversion> <groupid> com.chhliu.springboot.restful.restful. <artifactId>springboot-rest-template</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>springboot-rest-template</name> <description>Demo project for Spring Boot RestTemplate</description> <parent> <groupId>org.springframework.boot</groupId> <ratfactid> Spring-Boot-Starter-Parent </artifactid> <sersive> 1.4.3.Release </version> <venfativePath/> <!-Поиск родителей от репозитория-> </parent> <properties> <project.build.sourceencoding> utf-8 </project.build.sourceencoding> <project.reporting.outputencoding> utf-8 </project.reporting.outputencoding> <java.version> 1,7 </java.version> </свойства> <Depertiencies> <dehyedies <groupId> org.springframework.boot </GroupId> <artifactid> Spring-boot-Starter-test </artifactid> <crappope> test </scope> </dependency> <!-Hot Boot, Hot Deployment Package, для отладки. <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> </project>
Поскольку нам нужно преобразовать соответствующую строку JSON в объект пользователя после того, как мы используем RestTemplate, чтобы вызвать службу Restful, нам нужно скопировать этот класс в проект, следующим образом:
пакет com.chhliu.springboot.restful.vo; импортировать java.math.bigdecimal; Пользователь открытого класса {Private Long ID; частное имя пользователя; Приватное название строки; частный короткий возраст; частный большой баланс; // ... методы получения и сеттера/ ** * ** * "]"; }} пакет com.chhliu.springboot.restful.controller; Импорт org.springframework.beans.factory.annotation.autowired; Импорт org.springframework.web.bind.annotation.getMaping; Импорт org.springframework.web.bind.annotation.pathvariable; Импорт org.springframework.web.bind.annotation.restcontroller; импорт org.springframework.web.client.resttemplate; импорт com.chhliu.springboot.restful.vo.user; @Restcontroller public class resttemplatecontroller {@autowired private resttemplate resttemplate; @Getmapping ("/template/{id}") public user findbyid (@pathvarible long id) {// http: // localhost: 7900/user/is является соответствующим URL предыдущего пользователя службы u = this.resttemplate.getforobject ("http: // localhost: 7900/user/" + id. System.out.println (u); вернуть u; }} пакет com.chhliu.springboot.restful; Импорт org.springframework.beans.factory.annotation.autowired; Импорт org.springframework.boot.springapplication; Импорт org.springframework.boot.autoconfigure.springbootapplication; Импорт org.springframework.boot.web.client.resttemplatebuilder; Импорт org.springframework.context.annotation.bean; импорт org.springframework.web.client.resttemplate; @Springbootapplication public class springbootresttemplateaplication {// Будьте осторожны при запуске этого, потому что мы вводим Resttemplate в контроллер, нам нужно создавать экземпляр класса При запуске @autowired private Resttemplatebuilder Builder; // Используйте ResttemplateBuilder для создания объекта RestTemplate. Весна вводил экземпляр Resttemplate по умолчанию @bean public resttemplate resttemplate () {return builder.build (); } public static void main (string [] args) {SpringApplication.run (SpringBootRestTemplateAplication.class, args); }} Введите: http: // localhost: 7902/шаблон/1 в вашем браузере
Результаты теста следующие:
Результаты консольной печати:
Пользователь [id = 1, username = user1, name = Zhang San, возраст = 20, баланс = 100,00]
Через приведенный выше тест показано, что мы успешно назвали сервис Spring Boot Restful.
В приведенном выше тесте есть очень плохая вещь.
Пользователь u = this.resttemplate.getForObject ("http: // localhost: 7900/user/" + id, user.class); Здесь появляется жесткий код. При изменении адреса сервера необходимо изменить соответствующий код, и для записи адреса сервиса Retfful в файл конфигурации требуется улучшенный метод.
Изменить контроллер следующим образом:
пакет com.chhliu.springboot.restful.controller; Импорт org.springframework.beans.factory.annotation.autowired; Импорт org.springframework.beans.factory.annotation.value; Импорт org.springframework.web.bind.annotation.getMaping; Импорт org.springframework.web.bind.annotation.pathvariable; Импорт org.springframework.web.bind.annotation.restcontroller; импорт org.springframework.web.client.resttemplate; импорт com.chhliu.springboot.restful.vo.user; @Restcontroller public class resttemplatecontroller {@autowired private resttemplate resttemplate; // URL -адрес, соответствующий службе RESTFUL @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); вернуть u; }}Файл конфигурации изменен следующим образом:
Server.port: 7902 user.userServicePath = http: // localhost: 7900/user/
Начните программу:
Я обнаружил, что тест в порядке. Позже мы представим Spring Cloud, чтобы еще больше улучшить этот метод вызова!
Выше всего содержание этой статьи. Я надеюсь, что это будет полезно для каждого обучения, и я надеюсь, что все будут поддерживать Wulin.com больше.