Resttemplate é um cliente fornecido pela Spring para acessar serviços REST. O RestTemplate fornece uma variedade de maneiras convenientes de acessar serviços HTTP remotos, que podem melhorar bastante a eficiência de escrita do cliente. No blog anterior, //www.vevb.com/article/132885.htm, o cliente Jersey foi usado para implementar o serviço RESTful que consome a inicialização da primavera. Em seguida, usamos Resttemplate para consumir o serviço RESTful no exemplo anterior. O exemplo anterior:
O Springboot integra o banco de dados de memória H2 para obter testes de unidade e bancos de dados irrelevância
Os serviços RESTful fornecidos por este exemplo são os seguintes: http: // localhost: 7900/usuário/1
{"Id": 1, "Nome de usuário": "User1", "Nome": "Zhang San", "Age": 20, "Balance": 100,00}
As dependências do arquivo POM são as seguintes:
<? xml versão = "1.0" coding = "utf-8"?> <Projeto xmlns = "http://maven.apache.org/pom/4.0.0" xmlns: xsi = "http://www.ww3.org/2001/xmlschaMance 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> <vroupId> com.chhliu <TrAtifactId> Springboot-Rest-Template </ArtifactId> <Versão> 0.0.1-Snapshot </siers> <bacaging> jar </acheging> <name> SpringBoot-Rest-Template </Name> <cription> Projeto Dempringfame para a inicialização Resttemplate </Descrição </Gruerid> Org.springfamework <TRAFACTID> Spring-Boot-Starter-Parent </stardifactId> <Versão> 1.4.3.Release </siers> <RelityPath/> <!-Lookup Parent from Repository-> </parent> </projecties> <projeto.build.sourcencoding> utf-8 </projecties> <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> <Depencency> <PuperId> org.springframework.boot </frugiD> <ArtifactId> Spring-boot-starter-test </stutifactId> <cope> teste </cope> </dependency> <!-inicialização, pacote de dependência a quente ou pacote de dependência de depuração, a conveniência da depuração, esse pacote-<Dependência> <Fair> <Fuar> ou de dependência da depuração, para a devolução da depuração, o pacote <FeePency> <Fair> <Fair> <Fair> <Fair> <field> ou pacote de dependência da depuração, para a devolução da depuração, o pacote <FeePency> <Fair> <Gugnid> ou de dependência de dependência, para a dependência da depuração. <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>
Como precisamos converter a sequência JSON correspondente em um objeto de usuário depois de usarmos Resttemplate para ligar para o serviço RESTful, precisamos copiar esta classe para o projeto, como segue:
pacote com.chhliu.springboot.restful.vo; importar java.math.bigdecimal; Public Class User {Private Long ID; Nome de usuário privado de string; nome de string privado; idade curta privada; equilíbrio privado bigdecimal; // ...Omit getter and setter methods/** * attention: * Details: TODO * @author chhliu * Creation time: 2017-1-20 2:05:45 pm * @return */ @Override public String toString() { return "User [id=" + id + ", username=" + username + ", name=" + name + ", age=" + age + ", balance=" + balance + "]"; }} pacote 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; importar com.chhliu.springboot.restful.vo.user; @RestController Classe public RestTemplateController {@AUTOWIRed Private Resttemplate Resttemplate; @GetMapping ("/model/{id}") public user findbyId (@pathvariable iD longo) {// http: // localhost: 7900/user/é o URL correspondente do usuário anterior Usuário u = this.resttemplate.getForobject ("http: // localhost: 79 System.out.println (u); devolver u; }} pacote 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 public Class SpringbootrestTemplateApplication {// Tenha cuidado ao iniciá -lo porque injetamos Resttemplate no controlador, precisamos instantar uma instância da classe ao iniciar o Builder de ResttemplateBuilder PrivateBuilder @Autowired; // Use RestTemplateBuilder para instanciar o objeto RestTemplate. A primavera injetou a instância RESTTEMPLATE por padrão @Bean public Resttemplate RestTemplate () {return Builder.build (); } public static void main (string [] args) {springapplication.run (springbootresttemplateApplication.class, args); }} Digite: http: // localhost: 7902/modelo/1 em seu navegador
Os resultados dos testes são os seguintes:
Resultados da impressão do console:
Usuário [id = 1, nome de usuário = user1, nome = zhang san, idade = 20, equilíbrio = 100,00]
Através do teste acima, é mostrado que chamamos com sucesso o serviço RESTful Spring Boot.
Há uma coisa muito ruim no teste acima.
Usuário u = this.resttemplate.getForObject ("http: // localhost: 7900/user/" + id, user.class); Código rígido aparece aqui. Quando o endereço do servidor muda, o código correspondente precisa ser alterado e é necessário um método aprimorado para gravar o endereço do serviço RESTful no arquivo de configuração.
Modifique o controlador da seguinte maneira:
pacote 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; importar com.chhliu.springboot.restful.vo.user; @RestController Classe public RestTemplateController {@AUTOWIRed Private Resttemplate Resttemplate; // O endereço URL correspondente ao serviço RESTful @Value ("$ {user.userServicePath}") private String UserServicePath; @GetMapping ("/model/{id}") public user findbyId (@pathVariable long id) {user u = this.resttemplate.getForObject (this.userServicePath + id, user.class); System.out.println (u); devolver u; }}O arquivo de configuração é modificado da seguinte forma:
Server.port: 7902 user.userServicePath = http: // localhost: 7900/user/
Inicie o programa:
Descobri que o teste está ok. Mais tarde, apresentaremos a Spring Cloud para melhorar ainda mais esse método de chamada!
O exposto acima é todo o conteúdo deste artigo. Espero que seja útil para o aprendizado de todos e espero que todos apoiem mais o wulin.com.