添加 Eureka 依赖后接口默认返回 XML 格式的处理方案

一、场景介绍
  • 由于业务需要,将之前采用 Nacos 作为注册中心的应用模块换成 Eureka 作为注册中心

  • 之前所有接口返回的信息都从 JSON 结构变成了 XML 结构

二、问题分析
  1. 添加 Eureka 客户端依赖后返回的是 XML 格式的数据而不是 JSON 格式的数据

  2. 由现象可以知道,应该是换注册中心的问题

  3. 查看 Eureka 的依赖关系,可以看到 Eureka 中默认集成了 com.fasterxml.jackson.dataformatjackson-dataformat-xml

  4. XML 的优先级比 JSON 的高,所以会优先返回 XMl

三、解决方案
  1. 排除 Eureka 中默认集成了 com.fasterxml.jackson.dataformatjackson-dataformat-xml

    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        <!--去除jackson-dataformat-xml,否则会返回xml文件,而不是JSON-->
        <exclusions>
            <exclusion>
                <groupId>com.fasterxml.jackson.dataformat</groupId>
                <artifactId>jackson-dataformat-xml</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    
  2. 再次访问接口成功返回 JSON 结构

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SpringCloud提供了基于服务注册中心的解决方案,其中最常用的是Eureka和Consul。下面以Eureka为例,介绍一下SpringCloud如何实现服务的注册和发现。 1. 添加Eureka依赖 ```xml <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId> </dependency> ``` 2. 配置Eureka Server 在Spring Boot应用程序中,可以通过增加@EnableEurekaServer注释来启用Eureka Server。 ```java @EnableEurekaServer @SpringBootApplication public class EurekaServerApplication { public static void main(String[] args) { SpringApplication.run(EurekaServerApplication.class, args); } } ``` 配置文件application.yml: ```yaml server: port: 8761 # Eureka Server默认端口 eureka: instance: hostname: localhost # Eureka Server主机名 client: register-with-eureka: false fetch-registry: false ``` 3. 配置Eureka Client 在Spring Boot应用程序中,可以将@EnableDiscoveryClient添加到主类中以启用服务发现客户端。 ```java @EnableDiscoveryClient @SpringBootApplication public class EurekaClientApplication { public static void main(String[] args) { SpringApplication.run(EurekaClientApplication.class, args); } } ``` 配置文件application.yml: ```yaml server: port: 8080 # 应用程序端口 spring: application: name: eureka-client # 应用程序名称 eureka: client: service-url: defaultZone: http://localhost:8761/eureka/ # Eureka Server的URL ``` 4. 运行应用程序 首先启动Eureka Server,然后启动多个Eureka Client,它们将向Eureka Server注册并进行服务发现。在Eureka Server的管理页面上可以查看已注册的服务。 5. 使用服务 Eureka Client可以通过使用Spring Cloud的@LoadBalanced注释来负载均衡调用其他服务: ```java @RestController public class MyController { @Autowired private RestTemplate restTemplate; @GetMapping("/hello") public String hello() { String url = "http://eureka-client/hello"; // 调用eureka-client服务 return restTemplate.getForObject(url, String.class); } @Bean @LoadBalanced public RestTemplate restTemplate() { return new RestTemplate(); } } ``` 以上就是SpringCloud实现服务的注册和发现的基本流程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值