2024-10-17 15:31:15.726 ERROR 43188 --- [strix-pbl-web-1] com.pj.api.client.PblWebFeignFallback : -------系统配置服务异常,触发降级: No qualifying bean of type 'org.springframework.boot.autoconfigure.http.HttpMessageConverters' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}

在重构项目的时候,总是包这个异常,我就用通义千问,依然没有找到答案最后就想百度吧,结果,功夫不负有心人,让我看到了一个大哥的文章,这是原文章:No qualifying bean of type ‘org.springframework.boot.autoconfigure.http.HttpMessageConverters‘ 【已解决】_no qualifying bean of type 'com.szmsd.mps.carrier.-CSDN博客

后来我就按照大哥说的,加上了这个这个消息转换器,果然就是好用了

@Configuration
public class MessageConverterConfig {
    @Bean
    @ConditionalOnMissingBean
    public HttpMessageConverters messageConverters(ObjectProvider<HttpMessageConverter<?>> converters) {
        return new HttpMessageConverters(converters.orderedStream().collect(Collectors.toList()));
    }


}

在微服务架构中,网关作为系统入口点,负责将外部请求路由到相应的后端服务。当网关转发请求时,消息转换器(如HttpMessageConverters)的作用就变得非常重要了。以下是几个关键原因:

  1. 内容协商:不同的客户端可能希望以不同的格式接收数据(例如JSON、XML等)。消息转换器允许网关根据请求中的Accept头部来决定使用哪种序列化方式响应客户端。

  2. 请求体解析:对于POST或PUT等方法,客户端通常会在请求体中发送一些数据给服务器。这些数据可能是JSON、表单数据等形式。消息转换器能够自动地将这些请求体内容反序列化成Java对象,这样后端服务就可以直接处理业务逻辑而不需要关心底层的数据格式。

  3. 响应体生成:当后端服务返回结果时,这个结果往往是以某种特定的对象形式存在的。为了使这些对象能够通过HTTP协议传输,需要将其序列化为适合于网络传输的格式,比如JSON或XML。消息转换器负责这一过程,并且可以根据客户端的要求选择合适的格式。

  4. 统一接口:在一个复杂的微服务体系结构中,各个服务可能会采用不同的技术栈实现。通过配置适当的消息转换器,可以确保所有对外暴露的服务都遵循相同的通信标准和协议,从而简化集成工作并提高系统的可维护性。

  5. 扩展性和灵活性:Spring框架提供了多种内置的消息转换器,并且还支持自定义实现。这意味着开发者可以根据实际需求轻松添加新的数据格式支持或修改现有行为,使得网关更加灵活适应变化的需求。

综上所述,在网关进行请求转发的过程中,消息转换器是连接前后端之间数据交换的重要桥梁,保证了信息能够正确无误地在不同系统间传递。这对于构建高效、可靠的分布式应用程序至关重要。

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐