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

SpringCloud遠(yuǎn)程服務(wù)調(diào)用實戰(zhàn)筆記

 更新時間:2021年11月24日 14:32:11   作者:CloverYou  
本文給大家介紹SpringCloud遠(yuǎn)程服務(wù)調(diào)用實戰(zhàn)筆記,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧

筆記

在微服務(wù)中,若想要使用遠(yuǎn)程調(diào)用,需要引入spring-cloud-starter-openfeign(在使用注冊中心的環(huán)境下)

<dependency>
  <groupId>org.springframework.cloud</groupId>
  <artifactId>spring-cloud-starter-openfeign</artifactId>
  <version>xxx</version>
</dependency>

由于open-feign是聲明式的遠(yuǎn)程調(diào)用,所以需要編寫一個接口,并且告訴SpringCloud這個接口需要調(diào)用遠(yuǎn)程服務(wù)。這個接口我放在公共模塊下的feign中。

package top.ctong.gulimall.common.feign;

import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import top.ctong.gulimall.common.utils.R;

import java.util.Map;
@FeignClient("gulimall-coupon")
@RequestMapping("/coupon/coupon")
public interface CouponFeignService {

    /**
     * 通過自定義參數(shù)查詢列表
     * @param params 自定義參數(shù)
     * @return R
     * @author Clover You
     * @date 2021/11/17 09:11
     */
    @RequestMapping("/list")
    R list(@RequestParam Map<String, Object> params);
}

@FeignClient("xxx") 該注解用于告訴SpringCloud這是一個遠(yuǎn)程調(diào)用接口,其中的value是你在注冊中心中注冊的服務(wù)名。

接口方法簽名需要與被調(diào)用的遠(yuǎn)程服務(wù)簽名一致,例如上面哪個代碼要調(diào)用的遠(yuǎn)程服務(wù):

package top.ctong.gulimall.coupon.controller;

@RestController
@RequestMapping("coupon/coupon")
public class CouponController {
    @Autowired
    private CouponService couponService;
    /**
     * 列表
     */
    @RequestMapping("/list")
    //@RequiresPermissions("coupon:coupon:list")
    public R list(@RequestParam Map<String, Object> params){
        PageUtils page = couponService.queryPage(params);
        return R.ok().put("page", page);
    }
}

接著還要使用@EnableFeignClients開啟當(dāng)前需要使用遠(yuǎn)程調(diào)用的這個服務(wù)的遠(yuǎn)程調(diào)用,并且指定你的遠(yuǎn)程調(diào)用接口在哪個包下。

@EnableFeignClients(basePackages = "top.ctong.gulimall.common.feign")
@EnableDiscoveryClient
@MapperScan("top.ctong.gulimall.member.dao")
@SpringBootApplication
public class GulimallMemberApplication {

    public static void main(String[] args) {
        SpringApplication.run(GulimallMemberApplication.class, args);
    }

} 

@EnableFeignClients 該注解用于開啟當(dāng)前服務(wù)的遠(yuǎn)程調(diào)用功能

basePackages 用于指定遠(yuǎn)程調(diào)用接口所在的包,方便服務(wù)啟動的時候可以快速掃描到。他可以接收多個包名,因為它是一個String[]

最后在需要遠(yuǎn)程調(diào)用時注入對應(yīng)的遠(yuǎn)程調(diào)用接口就好

package top.ctong.gulimall.member.controller;

@RestController
@RequestMapping("member/member")
public class MemberController {

    private final CouponFeignService couponFeignService;

    @Autowired
    public MemberController(CouponFeignService couponFeignService, MemberService memberService) {
        this.couponFeignService = couponFeignService;
        this.memberService = memberService;
    }
  
    @RequestMapping("/testFeignInvoke")
    public R testFeignInvoke() {
        Map<String, Object> parem = new HashMap<>(10);
        return couponFeignService.list(parem);
    }
}

錯誤(nacos)

如果在啟動時出現(xiàn) No Feign Client for loadBalancing defined. Did you forget to include spring-cloud-starter-loadbalancer? 錯誤,那么就是你的SpringCloud版本比較高,在高版本的SpringCloud中已經(jīng)不再使用 spring-cloud-starter-netflix-ribbon 了,而是使用 spring-cloud-starter-loadbalancer 。而nacos還是使用的 spring-cloud-starter-netflix-ribbon。

pom.xml文件中引入 spring-cloud-starter-loadbalancer 再啟動就沒毛病了。

<dependency>
  <groupId>org.springframework.cloud</groupId>
  <artifactId>spring-cloud-starter-loadbalancer</artifactId>
  <version>3.0.4</version>
</dependency>

在測試遠(yuǎn)程調(diào)用中發(fā)生 AbstractMethodError 異常。需要在 pom.xml 中排除 nacos 中引入的 ribbon 。否則 spring-cloud-starter-loadbalancer 無法工作。

<dependency>
  <groupId>com.alibaba.cloud</groupId>
  <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
  <exclusions>
    <exclusion>
      <groupId>com.netflix.ribbon</groupId>
      <artifactId>ribbon</artifactId>
    </exclusion>
  </exclusions>
</dependency>

到此這篇關(guān)于SpringCloud遠(yuǎn)程服務(wù)調(diào)用 的文章就介紹到這了,更多相關(guān)SpringCloud服務(wù)調(diào)用 內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Spring MVC Interceptor 實現(xiàn)性能監(jiān)控的功能代碼

    Spring MVC Interceptor 實現(xiàn)性能監(jiān)控的功能代碼

    本篇文章主要介紹了Spring MVC Interceptor 實現(xiàn)性能監(jiān)控的功能代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-09-09
  • mybatis3中@SelectProvider傳遞參數(shù)方式

    mybatis3中@SelectProvider傳遞參數(shù)方式

    這篇文章主要介紹了mybatis3中@SelectProvider傳遞參數(shù)方式。具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • 淺談springboot 屬性定義

    淺談springboot 屬性定義

    本篇文章主要介紹了淺談springboot 屬性定義,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-08-08
  • Java使用Redisson分布式鎖實現(xiàn)原理

    Java使用Redisson分布式鎖實現(xiàn)原理

    Redisson分布式鎖 之前的基于注解的鎖有一種鎖是基本redis的分布式鎖,這篇文章主要介紹了Java使用Redisson分布式鎖實現(xiàn)原理,非常具有實用價值,需要的朋友可以參考下
    2018-10-10
  • netty中的IO、NIO、AIO使用詳解

    netty中的IO、NIO、AIO使用詳解

    這篇文章主要介紹了netty中的IO、NIO、AIO使用詳解,本文會說明各種IO的特點、分別解決了什么樣的問題做一個分析闡述,并結(jié)合Java代碼例子來輔助理解,像這些的歷史演進(jìn)和詳細(xì)的底層原理網(wǎng)上很多,所以我們只站在應(yīng)用層,使用者的角度去分析,需要的朋友可以參考下
    2023-12-12
  • Spring中@Primary注解的作用詳解

    Spring中@Primary注解的作用詳解

    這篇文章主要介紹了Spring中@Primary注解的作用詳解,@Primary 注解是Spring框架中的一個注解,用于標(biāo)識一個Bean作為默認(rèn)的實現(xiàn)類,當(dāng)存在多個實現(xiàn)類時,通過使用@Primary注解,可以指定其中一個作為默認(rèn)的實現(xiàn)類,以便在注入時自動選擇該實現(xiàn)類,需要的朋友可以參考下
    2023-10-10
  • SpringBoot+Mybatis Plus導(dǎo)致PageHelper失效的解決方法

    SpringBoot+Mybatis Plus導(dǎo)致PageHelper失效的解決方法

    在Springboot項目中使用分頁插件的時候,發(fā)現(xiàn)PageHelper插件失效了 ,本文主要介紹了SpringBoot+Mybatis Plus導(dǎo)致PageHelper失效的解決方法,感興趣的可以了解一下
    2024-07-07
  • 在Spring Boot中如何使用Cookies詳析

    在Spring Boot中如何使用Cookies詳析

    這篇文章主要給大家介紹了關(guān)于在Spring Boot中如何使用Cookies的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者使用Spring Boot具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-11-11
  • 三道java新手入門面試題,通往自由的道路--鎖+Volatile

    三道java新手入門面試題,通往自由的道路--鎖+Volatile

    這篇文章主要為大家分享了最有價值的3道多線程面試題,涵蓋內(nèi)容全面,包括數(shù)據(jù)結(jié)構(gòu)和算法相關(guān)的題目、經(jīng)典面試編程題等,對hashCode方法的設(shè)計、垃圾收集的堆和代進(jìn)行剖析,感興趣的小伙伴們可以參考一下
    2021-07-07
  • SpringBoot 之啟動流程詳解

    SpringBoot 之啟動流程詳解

    SpringBoot 是一個基于 Spring 框架的快速開發(fā)框架,旨在簡化 Spring 應(yīng)用程序的開發(fā)和部署。在本文中,我們將深入分析 SpringBoot 啟動過程的源代碼,并提供必要的解釋和說明
    2023-04-04

最新評論

万安县| 墨竹工卡县| 长寿区| 武乡县| 铁岭市| 仙桃市| 宣威市| 宁南县| 成都市| 连平县| 筠连县| 沙田区| 朔州市| 敦煌市| 文安县| 内丘县| 吴忠市| 三河市| 鹤庆县| 城固县| 新河县| 梁平县| 宿迁市| 东莞市| 阳山县| 扎兰屯市| 安西县| 湖北省| 琼结县| 江北区| 德保县| 无为县| 红河县| 周宁县| 镇坪县| 永靖县| 南丹县| 肥乡县| 湖南省| 密云县| 丰都县|