spring cloud 微服务部署(2025年)第四章:Nacos、LoadBalancer、GateWay、Ribbon集成之跨服务调用ribbon

【spring cloud 3.0微服务部署】第四章:Nacos、LoadBalancer、GateWay、Ribbon集成之跨服务调用ribbon

  • 链接
    • 第一章:Nacos、LoadBalancer、GateWay、Ribbon集成之Nacos部署
    • 第二章:Nacos、LoadBalancer、GateWay、Ribbon集成之负载均衡LoadBalancer部署
    • 第三章:Nacos、LoadBalancer、GateWay、Ribbon集成之网关Gateway部署
    • 第四章:Nacos、LoadBalancer、GateWay、Ribbon集成之跨服务调用ribbon
    • 查看源码
  • 正文
    • 接前章
    • 微服务myapp1调用myapp2
    • RestTemplate 发送json

链接

第一章:Nacos、LoadBalancer、GateWay、Ribbon集成之Nacos部署

第二章:Nacos、LoadBalancer、GateWay、Ribbon集成之负载均衡LoadBalancer部署

第三章:Nacos、LoadBalancer、GateWay、Ribbon集成之网关Gateway部署

第四章:Nacos、LoadBalancer、GateWay、Ribbon集成之跨服务调用ribbon

查看源码

正文

接前章

微服务myapp1调用myapp2

修改MyApp1Controller.java,新增getApp2接口

bash 复制代码
package com.que5;
import jakarta.annotation.Resource;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.client.RestTemplate;

/**
 * <p>
 * 用户列表 前端控制器
 * </p>
 *
 * @author evan
 * @since 2024-11-28
 */
@RestController
@RequestMapping("/cloud")
public class MyApp1Controller {

    @Value("${server.port}")
    private Integer port;
    @Value("${spring.application.name}")
    private String name;
    @GetMapping("/hello")
    public String hello(@RequestParam(name = "msg",required = false) String msg) {
        return "hello name:"+name+",port:"+port + " msg:" + msg;
    }

    @Resource
    RestTemplate restTemplate;
    @GetMapping("/getApp2")
    public String getApp2() {

        return "getApp2:"+restTemplate.getForObject("http://myapp2/cloud/hello?msg=我来自myapp1",String.class);
    }
}

RestTemplate 发送json

GET请求:getForObject

POST请求:postForObject

bash 复制代码
HttpHeaders headers = new HttpHeaders();
        headers.setContentType(MediaType.APPLICATION_JSON);
        HttpEntity<String> entity = new HttpEntity<>(json, headers);
        
        String result = restTemplate.postForObject(url, entity, String.class); // 或者使用exchange方法获取更详细的响应信息
        System.out.println(result);

结语: ribbon是nacos默认集成,所以不需要额外引入,没有用open feign是因为想精简一些,虽然open feign看起来调用更简单一些。

相关推荐
地瓜伯伯25 分钟前
SpringBoot项目整合Elasticsearch启动失败的常见错误总结
spring boot·elasticsearch·spring cloud
亚历克斯神41 分钟前
Java 23 虚拟线程进阶:深度探索与实战
java·spring·微服务
杰克尼2 小时前
天机学堂项目总结(day1~day2)
大数据·jvm·spring·elasticsearch·搜索引擎·spring cloud·mybatis
codeejun2 小时前
每日一Go-53、Go微服务--限流与降级
开发语言·微服务·golang
SL-staff3 小时前
2026企业文档选型白皮书:功能、技术栈、私有化部署与采购建议
spring cloud·docker·微服务·kubernetes·开源·私有化部署·企业文档
tumeng07114 小时前
springboot与springcloud对应版本
java·spring boot·spring cloud
aXin_ya4 小时前
微服务 第三天
java·微服务·架构
Wild API5 小时前
按任务轻重做模型分流的实战思路
分布式·微服务·架构
一个有温度的技术博主5 小时前
Eureka注册中心:微服务架构的“智能通讯录”
微服务·架构
weixin_704266055 小时前
SpringCloud Feign 声明式服务调用
后端·spring·spring cloud