最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringCloud Feign的使用簡介

 更新時間:2021年04月16日 10:36:44   作者:遇見_line  
這篇文章主要介紹了SpringCloud Feign的使用簡介,幫助大家更好的理解和學習使用SpringCloud,感興趣的朋友可以了解下

簡介

feign是聲明式的web service客戶端,它讓微服務之間的調(diào)用變得更簡單了,類似controller調(diào)用service。Spring Cloud集成了Ribbon和Eureka,可在使用Feign時提供負載均衡的http客戶端。

在springcloud中不僅可以使用Ribbo進行負載均衡,也可以使用Feign。Feign是在Ribbon的基礎上進行了一次改進,采用接口的方式實現(xiàn)負載均衡。

使用

  • 導入依賴
<dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-openfeign</artifactId>
    </dependency>
  • 編寫對應的接口

@FeignClient(value = "PROVIDER-NAME")聲明這是一個FeignClient,value指明需要的服務id

@FeignClient(value = "PROVIDER-NAME")
public interface DeptClientService {
// 請求的路徑需與服務提供者的路徑一致
    @RequestMapping(value = "/dev/add")
    boolean add(Dept dept);

    @RequestMapping(value = "/dev/{id}")
    Dept queryByID(@PathVariable("id") Long id );

    @PostMapping(value = "/dev/list")
    List<Dept> queryAll();
}

  • 修改Controller

我們不再使用RestTemplate來獲取所需的對象,而是通過之前定義的接口來獲取

@RestController
public class ConsumerController {
    @Autowired
    private DeptClientService service;
    @RequestMapping("/consumer/get/{id}")
    public Dept getByID(@PathVariable("id") Long id){
        return this.service.queryByID(id);
    }
    @RequestMapping("/consumer/add")
    public boolean add(String dname){
        Dept dept = new Dept();
        dept.setDname(dname);
        return this.service.add(dept);
    }
    @RequestMapping("/consumer/list")
    public List<Dept> list(){
        return this.service.queryAll();
    }

}
  • 修改啟動類

@EnableFeignClients 開啟Feign負載均衡

@SpringBootApplication(scanBasePackages = "com")
@EnableEurekaClient
@EnableFeignClients(basePackages = "com.service")
public class FeignApplication {
    public static void main(String[] args) {
        SpringApplication.run(FeignApplication.class,args);
    }
}

  • 對比:

Ribbon

public class ConsumerController {
    @Autowired
    private RestTemplate template;
    private static final String url="http://PROVIDER-NAME";
    @RequestMapping("/consumer/get/{id}")
    public Dept getByID(@PathVariable long id){
                                                //請求的路徑,返回的對象
        Dept getEntity = template.getForObject(url + "/dev/" + id, Dept.class);
        return getEntity;
    }
    @RequestMapping("/consumer/add")
    public boolean add(String dname){
        Dept dept = new Dept();
        dept.setDname(dname);
        System.out.println(dept);
        //請求的路徑,傳遞的參數(shù),返回的對象
        return template.postForObject(url+ "/dev/add",dept,Boolean.class);
    }
    @RequestMapping("/consumer/list")
    public List<Dept> list(){
        //請求的路徑,返回的對象
        return template.postForObject(url+"/dev/list",void.class,List.class);
    }

}

Feign

@RestController
public class ConsumerController {
    @Autowired
    private DeptClientService service;
    @RequestMapping("/consumer/get/{id}")
    public Dept getByID(@PathVariable("id") Long id){
        return this.service.queryByID(id);
    }
    @RequestMapping("/consumer/add")
    public boolean add(String dname){
        Dept dept = new Dept();
        dept.setDname(dname);
        return this.service.add(dept);
    }
    @RequestMapping("/consumer/list")
    public List<Dept> list(){
        return this.service.queryAll();
    }

}

總結(jié)

Feign的使用與Ribbon不同的地方在于

  1. Feign通過接口來實現(xiàn),更符合我們的面向接口編程的習慣
  2. 在Ribbon的Controller中我們需要將url拼接,而Feign幫我們進行了拼接

以上就是SpringCloud Feign的使用簡介的詳細內(nèi)容,更多關于SpringCloud Feign的資料請關注腳本之家其它相關文章!

相關文章

  • 深入理解Mybatis一級緩存

    深入理解Mybatis一級緩存

    客戶端向數(shù)據(jù)庫服務器發(fā)送同樣的sql查詢語句,如果每次都去訪問數(shù)據(jù)庫,會導致性能的降低,那么怎么提高呢?下面小編給大家分享下mybatis為我們提供了一級緩存的策略
    2016-12-12
  • Java多線程實現(xiàn)Runnable方式

    Java多線程實現(xiàn)Runnable方式

    這篇文章主要為大家詳細介紹了Java多線程如何實現(xiàn)Runnable方式,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-03-03
  • Java數(shù)據(jù)結(jié)構(gòu)之棧的基本定義與實現(xiàn)方法示例

    Java數(shù)據(jù)結(jié)構(gòu)之棧的基本定義與實現(xiàn)方法示例

    這篇文章主要介紹了Java數(shù)據(jù)結(jié)構(gòu)之棧的基本定義與實現(xiàn)方法,簡單描述了數(shù)據(jù)結(jié)構(gòu)中棧的功能、原理,并結(jié)合java實例形式分析了棧的基本定義與使用方法,需要的朋友可以參考下
    2017-10-10
  • Java中instanceof關鍵字實例講解

    Java中instanceof關鍵字實例講解

    大家好,本篇文章主要講的是Java中instanceof關鍵字實例講解,感興趣的同學趕快來看一看吧,對你有幫助的話記得收藏一下
    2022-01-01
  • Java:詳解Java中的異常

    Java:詳解Java中的異常

    這篇文章主要介紹了java中的異常,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2021-08-08
  • Java實現(xiàn)遠程控制技術完整源代碼分享

    Java實現(xiàn)遠程控制技術完整源代碼分享

    這篇文章主要為大家詳細介紹了Java實現(xiàn)遠程控制技術完整源代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-08-08
  • SpringBoot中Druid連接池與多數(shù)據(jù)源切換的方法

    SpringBoot中Druid連接池與多數(shù)據(jù)源切換的方法

    微服務架構(gòu)中多數(shù)據(jù)源切換是個常見的需求,Spring Boot 提供了強大的支持來簡化這一過程.本文給大家介紹了SpringBoot中Druid連接池與多數(shù)據(jù)源切換的方法,需要的朋友可以參考下
    2024-11-11
  • java實現(xiàn)砸金蛋抽獎功能

    java實現(xiàn)砸金蛋抽獎功能

    這篇文章主要為大家詳細介紹了java實現(xiàn)砸金蛋抽獎功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-11-11
  • Java代理模式的示例詳解

    Java代理模式的示例詳解

    代理模式(Proxy Parttern)為一個對象提供一個替身,來控制這個對象的訪問,即通過代理對象來訪問目標對象。本文將通過示例詳細講解一下這個模式,需要的可以參考一下
    2022-02-02
  • java與微信小程序?qū)崿F(xiàn)websocket長連接

    java與微信小程序?qū)崿F(xiàn)websocket長連接

    這篇文章主要為大家詳細介紹了java與微信小程序?qū)崿F(xiàn)websocket長連接,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-05-05

最新評論

应城市| 宝鸡市| 潜江市| 会昌县| 潍坊市| 无极县| 安仁县| 牙克石市| 六盘水市| 中西区| 清新县| 临潭县| 隆德县| 广昌县| 安龙县| 潜江市| 怀远县| 长兴县| 界首市| 双城市| 阿拉善盟| 浮梁县| 彰武县| 绥芬河市| 武夷山市| 平顺县| 长武县| 治县。| 连城县| 滦南县| 景泰县| 平南县| 赞皇县| 原阳县| 离岛区| 邓州市| 克山县| 蒙城县| 普兰县| 突泉县| 黄山市|