负载均衡组件 -loadBalancer 无法获取服务端信息问题

负载均衡组件 -loadBalancer 无法获取服务端信息问题

客户端出现以上截图问题,可以考虑以下方案

  1. 负载均衡是否开启配置

    java 复制代码
    @Configuration
    public class RestTemplateConfig {
        @Bean
        @LoadBalanced
        public RestTemplate restTemplate() {
            return new RestTemplate();
        }
    }
  2. 用了@Controller而不是@RestController

    @Controller是返回视图的,不会把方法返回值直接作为 HTTP 响应

    即使接口注册了,也会返回 404(找不到视图),需要搭配@ResponseBody

    修正方法:直接用@RestController(等价于@Controller + @ResponseBody

  3. @GetMapping路径拼写错误

    比如代码里写的是/api/consumer/call-provider,但你访问的是/api/consum/call-provider(少了e

    或者多了空格、大小写错误(Spring Boot 路径默认大小写敏感)

    修正方法:严格核对代码路径和浏览器访问路径,完全一致

  4. 端口 / 服务启动错误

    你以为启动的是 8081 端口的 consumer 服务,但实际启动的是其他服务,或者服务没启动成功

    验证:访问localhost:8081,看是否返回 Spring Boot 的默认错误页(确认服务正常运行在 8081)

    修正方法:在 IDEA 的 Run 窗口确认Started ConsumerApplication日志,端口是8081

  5. 包路径不匹配

    你的启动类 ConsumerApplication 所在包:com.example.consumer

    你的配置类 RestTemplateConfig 所在包:net.togogo.controller(和启动类完全不在同一个包,也不是子包)

    Spring Boot 默认只扫描启动类所在包及其子包 ,所以 RestTemplateConfig 完全被忽略了,@LoadBalanced 修饰的 RestTemplate Bean 根本没被创建!

    ConsumerControllerTestnet.togogo.controller 包下,虽然加了 @RestController,但因为 RestTemplate Bean 不存在,注入失败,服务直接启动报错(exit code 1)

    RestTemplateConfig 上标了 no usages,就是因为 Spring 根本没加载这个类,IDEA 也识别到它没被使用。

    修正方法:

    1. 调整包路径 让其在统一路径或统一路径子包下
      A 也识别到它没被使用。

    修正方法:

    1. 调整包路径 让其在统一路径或统一路径子包下
    2. 给启动类加 @ComponentScan 手动指定扫描包
相关推荐
ALex_zry2 小时前
Converter双向转换的边界条件处理
运维·服务器·建造者模式
IMPYLH2 小时前
Linux 的 printf 命令
linux·运维·服务器·bash
国信DRS杭州数据恢复2 小时前
浪潮服务器RAID5磁盘阵列VMFS文件系统下虚拟机误删除数据恢复
运维·科技·硬件架构·硬件工程·运维开发
Coco_淳2 小时前
linux 服务器 初始化数据盘
运维·服务器
一条咸鱼¥¥¥2 小时前
ApeosPort-lVC3375如何打印账户管理报告
运维·经验分享·打印机
艾莉丝努力练剑2 小时前
【Linux加餐】mmap文件映射
linux·运维·服务器·c语言·c++·学习
returnthem2 小时前
运维笔记:Shell 脚本入门到实践
运维·笔记
DeepHacking2 小时前
Ubuntu 22.04 安装 Allow Locked Remote Desktop 扩展:解决锁屏后 mstsc 无法连接的问题
linux·运维·ubuntu
李日灐2 小时前
<3>Linux 基础指令:从时间、查找、文本过滤到 .zip/.tgz 压缩解压与常用热键
linux·运维·服务器·开发语言·后端·面试·指令