调用feign接口时报空指针异常:NullPointerException

java.lang.NullPointerException: null
at org.springframework.cloud.context.named.NamedContextFactory.getContext(NamedContextFactory.java:105)
    at org.springframework.cloud.context.named.NamedContextFactory.getProvider(NamedContextFactory.java:179)
    at org.springframework.cloud.context.named.ClientFactoryObjectProvider.delegate(ClientFactoryObjectProvider.java:115)
    at org.springframework.cloud.context.named.ClientFactoryObjectProvider.getIfAvailable(ClientFactoryObjectProvider.java:64)
    at com.alibaba.cloud.nacos.loadbalancer.NacosLoadBalancer.choose(NacosLoadBalancer.java:68)
    at com.alibaba.cloud.nacos.loadbalancer.NacosLoadBalancer.choose(NacosLoadBalancer.java:47)

 原因:启动类在com包下,springboot默认扫描是当前包及其子包,所以com包下的类都会被扫描,NacosLoadBalancerClientConfiguration就会被加载,然后导致ReactorLoadBalancer会被注册。由于项目开发中,没时间深究,暂时放在这里。

解决办法:修改启动类包扫描路径,不要扫描com包。

参考文章:调用feign接口时报空指针异常:NullPointerException_client调用接口报nullpointerexception-优快云博客


                
Feign接口调用时出现 `error while extracting response for type` 异常,通常意味着在将响应内容转换为指定类型时出现了问题,以下是一些常见的解决办法: ### 检查响应数据与目标类型是否匹配 确保服务端返回的数据结构与Feign客户端期望接收的类型一致。例如,如果服务端返回的是JSON数组,而客户端期望的是单个对象,就会出现转换异常。 ```java // 假设服务端返回JSON数组 // 错误示例:期望单个对象 @FeignClient(name = "example-service") public interface ExampleFeignClient { @GetMapping("/data") ExampleData getData(); } // 正确示例:期望数组 @FeignClient(name = "example-service") public interface ExampleFeignClient { @GetMapping("/data") List<ExampleData> getData(); } ``` ### 检查JSON解析器配置 Feign默认使用Jackson进行JSON解析,确保Jackson配置正确,并且能够处理服务端返回的JSON数据。可以自定义Feign的解码器来配置Jackson。 ```java import feign.codec.Decoder; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter; import feign.jackson.JacksonDecoder; @Configuration public class FeignConfig { @Bean public Decoder feignDecoder() { return new JacksonDecoder(new MappingJackson2HttpMessageConverter()); } } ``` ### 处理响应状态码 如果服务端返回的状态码不是200,Feign可能会抛出异常。可以自定义错误解码器来处理不同的状态码。 ```java import feign.Response; import feign.codec.ErrorDecoder; import org.springframework.stereotype.Component; @Component public class CustomErrorDecoder implements ErrorDecoder { @Override public Exception decode(String methodKey, Response response) { // 处理不同的状态码 switch (response.status()) { case 400: // 处理400错误 break; case 404: // 处理404错误 break; default: return new Exception("Generic error"); } return null; } } ``` ### 检查服务端响应内容 确保服务端返回的JSON数据格式正确,没有语法错误。可以使用工具(如Postman)直接调用服务端接口,查看返回的JSON数据。 ### 检查依赖版本 确保FeignSpring Cloud等相关依赖的版本兼容。不同版本的依赖可能存在兼容性问题,导致JSON解析异常
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值