前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >openfeign远程调用

openfeign远程调用

作者头像
阿超
发布2022-08-16 19:16:12
发布2022-08-16 19:16:12
45300
代码可运行
举报
文章被收录于专栏:快乐阿超快乐阿超
运行总次数:0
代码可运行

不患人之不己知,患不知人也。——孔子《论语》

书接上文,我们配置了nacos,实现了服务注册与发现

我们再配置一台

代码语言:javascript
代码运行次数:0
复制
spring:
  cloud:
    nacos:
      config:
        server-addr: 127.0.0.1:8848
  application:
    name: ruben-consumer
server:
  port: 8081

在配好的这台ruben-consumer中随便写个接口

代码语言:javascript
代码运行次数:0
复制
package com.ruben.rubenproducerdemo.controller;

import com.ruben.rubenproducerdemo.pojo.dto.PageDTO;
import com.ruben.rubenproducerdemo.utils.AjaxJson;
import org.springframework.web.bind.annotation.*;

@RestController
@RequestMapping("study")
public class StudyController {

    @GetMapping("list")
    public AjaxJson list(@RequestBody PageDTO pageDTO) {
        return AjaxJson.success().put("data", pageDTO);
    }

}

然后在第一台引入Feign的依赖

代码语言:javascript
代码运行次数:0
复制
<!--    openfeign 远程调用    -->
      <dependency>
          <groupId>org.springframework.cloud</groupId>
          <artifactId>spring-cloud-starter-openfeign</artifactId>
          <version>2.2.0.RELEASE</version>
      </dependency>

在主启动类上方加上@EnableFeignClients注解

代码语言:javascript
代码运行次数:0
复制
package com.ruben;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.openfeign.EnableFeignClients;
import org.springframework.scheduling.annotation.EnableScheduling;

@EnableScheduling
@EnableFeignClients("com.ruben.feign")
@EnableDiscoveryClient
@SpringBootApplication
@MapperScan({"com.ruben.dao.xml"})
public class SimpleSpringbootApplication {

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

}

然后我们在调用方ruben-provider写个接口

代码语言:javascript
代码运行次数:0
复制
package com.ruben.feign;

import com.ruben.pojo.dto.PageDTO;
import com.ruben.utils.AjaxJson;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestBody;

@FeignClient("ruben-consumer")
public interface StudyFeignService {
    @GetMapping("study/list")
    AjaxJson list(@RequestBody PageDTO pageDTO);
}

再调用ruben-consumer

代码语言:javascript
代码运行次数:0
复制
package com.ruben.controller;

import com.ruben.feign.StudyFeignService;
import com.ruben.pojo.dto.PageDTO;
import com.ruben.utils.AjaxJson;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;

/**
 * @ClassName: StudyController
 * @Description: 我还没有写描述
 * @Date: 2021/3/4 0004 21:49
 * *
 * @author: <achao1441470436@gmail.com>
 * @version: 1.0
 * @since: JDK 1.8
 */
@RestController
@RequestMapping("study")
public class StudyController {
    @Resource
    private StudyFeignService studyFeignService;

    @PostMapping("list")
    public AjaxJson list(@RequestBody PageDTO pageDTO) {
        return studyFeignService.list(pageDTO);
    }

}

最后实现远程调用服务

可以看到我们调用ruben-provider的接口,实际返回了ruben-consumer接口的结果

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-03-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档