Springboot整合openFeign及nacos

Springboot整合openFeign及nacos(注册中心)

1. 新建项目(maven/springboot)并在项目中建立3个Module,分别为:

一、common_api
二、nacos_provider
三、nacos_consumer

image

2. common_api: 作为公共实体对象

2.1 编写公共实体

@Data
@AllArgsConstructor
@NoArgsConstructor
public class UserDTO implements Serializable {
    private Integer id;
    private String name;
    private Boolean Status;
}

3. nacos_provider 提供者

3.1 添加依赖

 <!-- 添加 Nacos 支持 -->
 <dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-actuator</artifactId>
 </dependency>
 <dependency>
     <groupId>com.alibaba.cloud</groupId>
     <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
 </dependency>
 <dependency>
     <groupId>org.example</groupId>
     <artifactId>common_api</artifactId>
     <version>1.0-SNAPSHOT</version>
 </dependency>

3.2 编写配置文件

# 应用名称
spring:
  application:
    name: nacos-provider-openFeign
  cloud:
    nacos:
      discovery:
        username: nacos # nacos 登录用户名
        password: nacos # nacos 密码
        server-addr: 127.0.0.1:8848 # nacos 服务端地址
# 应用服务 WEB 访问端口
server:
  port: 8080

3.3 编写接口

@RestController
public class TestController {
    @Resource
    private ProService proService;

    /**
     * 为客户端提供可调用的接口
     */
    @RequestMapping("/call/{name}")
    public String call(@PathVariable String name) {
        return LocalTime.now() + "——服务提供者1:" + name;
    }

    @PostMapping("/findAll")
    public List<UserDTO> findAll() {
        System.out.println("执行调用方法");
        return proService.findAll();
    }
    /**
     * openFeign默认的传参方式就是JSON传参(@RequestBody),
     * 因此定义接口的时候可以不用@RequestBody注解标注,不过为了规范,一般都填上。
     */
    @RequestMapping("/findAllByUser")
    public List<UserDTO> findAllByUser(@RequestBody UserDTO userDTO) throws InterruptedException {
        System.out.println(userDTO);
        return proService.findAll();
    }
}

3.4 编写service和serviceImpl(简单写一下)

List<UserDTO> findAll();
@Override
    public List<UserDTO> findAll() {
        List<UserDTO> list=new ArrayList<>();
        list.add(new UserDTO(1,"张三",true));
        list.add(new UserDTO(2,"李四",false));
        list.add(new UserDTO(3,"王五",true));
        return list;
    }

4. nacos_consumer 消费者

4.1 添加依赖

 <!-- 添加 Nacos 支持 -->
 <dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-actuator</artifactId>
 </dependency>
 <dependency>
     <groupId>com.alibaba.cloud</groupId>
     <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
 </dependency>
 <dependency>
     <groupId>org.example</groupId>
     <artifactId>common_api</artifactId>
     <version>1.0-SNAPSHOT</version>
 </dependency>
 <dependency>
     <groupId>org.springframework.cloud</groupId>
     <artifactId>spring-cloud-starter-openfeign</artifactId>
 </dependency>

4.2 编写配置文件

# 应用名称
spring:
  application:
    name: nacos-consumer-openFeign
  cloud:
    nacos:
      discovery:
        username: nacos # nacos 登录用户名
        password: nacos # nacos 密码
        server-addr: 127.0.0.1:8848 # nacos 服务端地址
feign:
  client:
    config:
      default:
        #建立连接所用的时间,适用于网络状况正常的情况下,两端连接所需要的时间
        connectTimeout: 5000
        #指建立连接后从服务端读取到可用资源所用的时间
        readTimeout: 5000
# 应用服务 WEB 访问端口
server:
  port: 8081

4.3 启动类添加依赖

@SpringBootApplication
@EnableFeignClients // 启用 OpenFeign
@EnableDiscoveryClient //启用nacos服务发现
public class NacosConsumerApplication {

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

4.4 消费者service

@FeignClient(value = "nacos-provider-openFeign")
public interface TestService {
    @GetMapping("/call/{name}")
    String call(@PathVariable(value = "name") String name);

    @PostMapping("/findAll")
    List<UserDTO> findAll();

    /**
     * openFeign默认的传参方式就是JSON传参(@RequestBody),
     * 因此定义接口的时候可以不用@RequestBody注解标注,不过为了规范,一般都填上。
     */
    @PostMapping("/findAllByUser")
    List<UserDTO> findAllByUser(@RequestBody UserDTO userDTO);
}

4.5 消费者Controller

@RestController
@RequestMapping("/test")
public class TestController {
    @Resource
    private TestService testService;

    @RequestMapping("/find")
    public String find(){
        String name="张三";
        return testService.call(name);
    }
    @PostMapping("/findAll")
    public List<UserDTO> findALl(){
        return testService.findAll();
    }

    @PostMapping("/findAllByUserDTO")
    public List<UserDTO> findAllByUserDTO(){
        UserDTO kk = new UserDTO(1, "看看", false);
        return testService.findAllByUser(kk);
    }
}

gitee

地址:https://gitee.com/song-xusheng/nacos_open-feign

声明:本文为作者个人学习及记录使用。如有错误,望指正。

posted @   __先森  阅读(886)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示