亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > Java > 正文

詳解SpringBoot通過restTemplate實現消費服務

2024-07-13 10:16:40
字體:
來源:轉載
供稿:網友

一、RestTemplate說明

RestTemplate是Spring提供的用于訪問Rest服務的客戶端,RestTemplate提供了多種便捷訪問遠程Http服務的方法,能夠大大提高客戶端的編寫效率。前面的博客中http://www.49028c.com/kaifa/java/305115.html,已經使用Jersey客戶端來實現了消費spring boot的Restful服務,接下來,我們使用RestTemplate來消費前面示例中的Restful服務,前面的示例:
springboot整合H2內存數據庫,實現單元測試與數據庫無關性

該示例提供的Restful服務如下:http://localhost:7900/user/1 

{"id":1,"username":"user1","name":"張三","age":20,"balance":100.00} 

二、創建工程

SpringBoot,消費服務,restTemplate

三、工程結構

SpringBoot,消費服務,restTemplate

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">   <modelVersion>4.0.0</modelVersion>    <groupId>com.chhliu.springboot.restful</groupId>   <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>     <artifactId>spring-boot-starter-parent</artifactId>     <version>1.4.3.RELEASE</version>     <relativePath/> <!-- lookup parent from repository -->   </parent>    <properties>     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>     <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>      <dependency>       <groupId>org.springframework.boot</groupId>       <artifactId>spring-boot-starter-test</artifactId>       <scope>test</scope>     </dependency>     <!-- 熱啟動,熱部署依賴包,為了調試方便,加入此包 -->     <dependency>       <groupId>org.springframework.boot</groupId>       <artifactId>spring-boot-devtools</artifactId>       <optional>true</optional>     </dependency>   </dependencies>    <build>     <plugins>       <plugin>         <groupId>org.springframework.boot</groupId>         <artifactId>spring-boot-maven-plugin</artifactId>       </plugin>     </plugins>   </build> </project> 

四、加入vo

由于我們使用RestTemplate調用Restful服務后,需要將對應的json串轉換成User對象,所以需要將這個類拷貝到該工程中,如下:

package com.chhliu.springboot.restful.vo;  import java.math.BigDecimal;  public class User {  private Long id;   private String username;   private String name;   private Short age;   private BigDecimal balance;   // ……省略getter和setter方法 /**  * attention:  * Details:TODO  * @author chhliu  * 創建時間:2017-1-20 下午2:05:45  * @return  */ @Override public String toString() {   return "User [id=" + id + ", username=" + username + ", name=" + name       + ", age=" + age + ", balance=" + balance + "]"; } } 

五,編寫controller

package 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 RestTemplate restTemplate;    @GetMapping("/template/{id}")   public User findById(@PathVariable Long id) {         // http://localhost:7900/user/是前面服務的對應的url         User u = this.restTemplate.getForObject("http://localhost:7900/user/" + id,         User.class);     System.out.println(u);     return u;   } } 

六、啟動程序

package 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 {   // 啟動的時候要注意,由于我們在controller中注入了RestTemplate,所以啟動的時候需要實例化該類的一個實例   @Autowired   private RestTemplateBuilder builder;      // 使用RestTemplateBuilder來實例化RestTemplate對象,spring默認已經注入了RestTemplateBuilder實例   @Bean   public RestTemplate restTemplate() {     return builder.build();   }    public static void main(String[] args) {     SpringApplication.run(SpringbootRestTemplateApplication.class, args);   } } 

七、測試

在瀏覽器中輸入:http://localhost:7902/template/1

測試結果如下:

控制臺打印結果:

User [id=1, username=user1, name=張三, age=20, balance=100.00] 

通過上面的測試,說明我們已經成功的調用了spring boot的Restful服務。

八、改進

上面的測試中,有一個很不好的地方,

User u = this.restTemplate.getForObject("http://localhost:7900/user/" + id,         User.class); 

此處出現了硬編碼,當服務器地址改變的時候,需要改動對應的代碼,改進的方法,將Restful服務的地址寫到配置文件中。
修改controller如下:

package 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 RestTemplate restTemplate;        // Restful服務對應的url地址   @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);     return u;   } } 

配置文件修改如下:

server.port:7902 user.userServicePath=http://localhost:7900/user/ 

啟動程序:

發現測試是ok的,后面我們會引入spring cloud對這種調用方式進行進一步的改進!

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VeVb武林網。


注:相關教程知識閱讀請移步到JAVA教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日本免费在线精品| 亚洲视频国产视频| 91亚洲精品一区二区| 九九热精品在线| 亚洲精品美女久久| 国产精品18久久久久久首页狼| 茄子视频成人在线| 播播国产欧美激情| 亚洲97在线观看| 成人黄色片在线| 国产精品久久久久久网站| 九色精品免费永久在线| 国产精品白丝jk喷水视频一区| 91免费国产网站| 国产福利精品在线| 国产精品久久电影观看| 亚洲美女久久久| 91免费的视频在线播放| 欧美电影在线观看| 日韩精品免费在线| 欧美xxxx14xxxxx性爽| www.99久久热国产日韩欧美.com| 最近免费中文字幕视频2019| 亚洲 日韩 国产第一| 国产在线高清精品| 日本午夜精品理论片a级appf发布| 精品国产福利视频| 亚洲精品少妇网址| 欧美日本精品在线| 国产精品国内视频| 91深夜福利视频| 欧美色视频日本高清在线观看| 奇米一区二区三区四区久久| 亚洲欧美制服另类日韩| 亚洲二区在线播放视频| 精品一区二区三区四区在线| 亚洲精品有码在线| 国产偷国产偷亚洲清高网站| 97av在线视频免费播放| 国产91免费观看| 国产区亚洲区欧美区| 欧美国产日韩中文字幕在线| 91久久精品视频| 国产免费一区视频观看免费| 欧美激情一级二级| 亚洲第一视频网站| 日韩专区在线播放| 国产精品一区二区三区久久久| 日韩av在线一区| 亚洲精品在线看| 在线成人激情视频| 日韩在线视频线视频免费网站| 欧美成人精品在线播放| 美女av一区二区| 日韩激情视频在线播放| 欧美激情videoshd| 精品女同一区二区三区在线播放| 国产精品欧美风情| 色久欧美在线视频观看| 精品中文字幕乱| 日韩毛片在线看| 精品国产乱码久久久久久虫虫漫画| 奇米4444一区二区三区| 亚洲一区二区久久久久久久| 2019av中文字幕| 最近2019中文字幕大全第二页| 国产裸体写真av一区二区| 久久av资源网站| 亚洲精选中文字幕| 国产成人精品视| 亚洲深夜福利在线| 中文字幕精品一区二区精品| 国产精品日韩在线| 一区二区三区无码高清视频| 欧美综合在线观看| 国产精品久久久久99| 亚洲欧美另类人妖| 精品国产一区二区三区久久狼5月| 亚洲电影av在线| 成人在线激情视频| 国产v综合ⅴ日韩v欧美大片| 精品中文视频在线| 国产精品视频免费在线观看| 久久人人爽人人爽爽久久| 日韩成人小视频| 国产精品久久不能| 欧美亚洲日本网站| 91精品中国老女人| 亚洲欧洲自拍偷拍| 九九九热精品免费视频观看网站| 日本免费一区二区三区视频观看| 欧美日韩亚洲系列| 国产狼人综合免费视频| 一区二区三区四区在线观看视频| 欧美一级淫片播放口| y97精品国产97久久久久久| 欧美日韩午夜视频在线观看| 欧美在线视频在线播放完整版免费观看| 中文字幕亚洲一区| 精品国产一区二区三区在线观看| 久久久久久香蕉网| 日本成人激情视频| 91久热免费在线视频| 成人在线观看视频网站| 久久99精品久久久久久琪琪| 亚洲欧美国产一区二区三区| 亚洲va久久久噜噜噜久久天堂| 久久久黄色av| 欧美精品亚州精品| www.久久撸.com| 日本精品在线视频| 亚洲丝袜一区在线| 51久久精品夜色国产麻豆| 国产成人av在线| 欧美日韩在线另类| 97视频色精品| 这里只有精品在线观看| 91精品久久久久久久久久另类| 国产精品96久久久久久| 欧美大成色www永久网站婷| 国产一区二区三区在线播放免费观看| 97久久精品国产| 精品国产老师黑色丝袜高跟鞋| 欧美大片va欧美在线播放| 亚洲欧洲在线播放| 成人性教育视频在线观看| 国产精品丝袜一区二区三区| 伊人久久久久久久久久久久久| 欧美精品久久久久久久久| 国产精品亚洲精品| 欧美高清自拍一区| 一二美女精品欧洲| 中文字幕日韩专区| 国产日韩欧美91| 亚洲最大福利网站| 国内精品久久久久久| 国产成人aa精品一区在线播放| 爱福利视频一区| 91性高湖久久久久久久久_久久99| 国产精品人人做人人爽| 中文字幕久久精品| 国产精品偷伦视频免费观看国产| 亚洲午夜久久久影院| 欧美日韩国产中字| 两个人的视频www国产精品| 91精品综合久久久久久五月天| 国产91在线高潮白浆在线观看| 2018中文字幕一区二区三区| 欧美巨猛xxxx猛交黑人97人| 国产成人精品免费久久久久| 欧美性猛交xxxx乱大交| 亚洲国产成人久久综合一区| 国产精品成熟老女人| 国产91色在线| 欧美日韩国产中字| 久久精品成人欧美大片古装| 欧美最猛黑人xxxx黑人猛叫黄| 亚洲福利视频二区| 国产精品国内视频| 91嫩草在线视频| 欧美精品生活片| 国产欧美va欧美va香蕉在| 欧美高清videos高潮hd| 不卡伊人av在线播放|