SpringCloud远程服务调用

下面介绍在SpringCloud中如何使用openfeign实现远程服务调用

1.在字典服务中有这么2个接口

@Api(tags = "数据字典接口")
@RestController
@RequestMapping("/admin/cmn/dict/")
@CrossOrigin
public class DictController {
    @Autowired
    private DictService dictService;

    //根据dictCode和value获取字典名称
    @GetMapping("/geDictName/{dictCode}/{value}")
    public String getDictName(@PathVariable String dictCode,
                              @PathVariable String value){
      return  dictService.getDictName(dictCode,value);
    }
    //根据value获取字典名称
    @GetMapping("/geDictName/{value}")
    public String getDictName(@PathVariable String value){
        return  dictService.getDictName("",value);
    }
}

2.其他微服务需要调用字典服务上面2个接口以实现将字典值转变为可识别的中文名称。下面说下实现的步骤:

2.1)在需要远程调用的微服务pom文件中引入依赖:

        <!-- 服务调用feign -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>
        <!-- 服务注册 -->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>

2.2)写一个interface,远程调用字典服务的2个接口

@FeignClient("service-cmn")
@Repository
public interface DictFeignClient {
    @GetMapping("/admin/cmn/dict/geDictName/{dictCode}/{value}")
    public String getDictName(@PathVariable("dictCode") String dictCode,
                              @PathVariable("value") String value);

    @GetMapping("/admin/cmn/dict/geDictName/{value}")
    public String getDictName(@PathVariable("value") String value);
}

这里需要注意,注解@PathVariable后面需要指明变量名,如@PathVaribale("value")否则会导致找不到(原接口中可不用写)。先用注解@FeignClient("service-cmn")指定要远程调用的微服务名,其次使用@Repository注解防止引用时红线警告,不写不影响正常使用。

2.3)在启动类上加上注解@EnableFeignClients(basePackages = "com.www"),开启远程调用,并指明扫描的包类

@SpringBootApplication
@MapperScan(basePackages = "com.www.hosp.mapper")
@ComponentScan(basePackages = "com.www")
@EnableDiscoveryClient
@EnableFeignClients(basePackages = "com.www")
public class ServiceHospApplication {
    public static void main(String[] args) {
        SpringApplication.run(ServiceHospApplication.class,args);
    }
}

保障能实现远程调用的前提条件:这2个服务在注册中心完成注册,并且服务能正常访问。

如此并可实现远程调用其他微服务。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值