Springboot整合openFeign及nacos
Springboot整合openFeign及nacos(注册中心)
1. 新建项目(maven/springboot)并在项目中建立3个Module,分别为:
一、common_api
二、nacos_provider
三、nacos_consumer
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
声明:本文为作者个人学习及记录使用。如有错误,望指正。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)