Eureka 的 Springboot 错误,浏览器显示 xml 而不是 json

Shi*_*raj 2 java xml json spring-boot netflix-eureka

我使用 Java8 和 SpringBoot 使用 Maven 创建了一个微服务。让我们称之为 MicroServiceA

它具有返回 ResponseEntity 对象的控制器,如下所示:

    @RestController
    @RequestMapping("/api")
    public class MicroserviceAController {  


        @GetMapping(value = "/all")
        public ResponseEntity<ServiceAResponseWrapper<List<ServiceADto>>> getAll() {

ServiceAResponseWrapper<List<ServiceADto>> wrapper = 
    new ServiceAResponseWrapper<List<ServiceADto>>(ServiceAResponseStatus.SUCCESS,findAll());

return new ResponseEntity<ServiceAResponseWrapper<List<ServiceADto>>>(wrapper,HttpStatus.OK);

        }

      public static List<ServiceADto> findAll() {
        //returns list of ServiceADto objects
    }

    }
Run Code Online (Sandbox Code Playgroud)

当我启动此服务并在任何浏览器中验证它时:http://localhost:8073/api/all/,我得到显示的 JSON 响应。

现在,如果我想将我的服务引入 EUREKA 服务注册中心,那么我需要进行以下更改。

  1. 创建 EUREKA 服务器微服务。我启动它 - http://localhost:8761/
  2. 对 MicroserviceA 进行如下更改 -

转到 pom.xml 并添加依赖项

<dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
        </dependency>
Run Code Online (Sandbox Code Playgroud)

转到 application.yml 并添加以下内容:

eureka:
  client:
    registerWithEureka: true
    fetch-registry: true
    service-url:
      defaultZone: http://localhost:8761/eureka/
Run Code Online (Sandbox Code Playgroud)

一旦我开始我的服务,我就开始在服务器http://localhost:8761/上看到它

现在我再次转到浏览器并尝试检查我的微服务http://localhost:8073/api/all/我看到的是 XML 而不是 JSON。

我什至试图通过在我的方法中添加注释来修改我的微服务控制器来修复它:

@Produces( { MediaType.APPLICATION_JSON} )
Run Code Online (Sandbox Code Playgroud)

但是我也看到了 XML 而不是 JSON。

我是否错过了 EUREKA 的某些内容或其正常行为?如果是,我该如何解决?

小智 5

如果您使用的是旧版本的 spring cloud starter,则可能需要排除 Jackson dataformat XML 依赖项

      <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-eureka</artifactId>
        <exclusions>
            <exclusion>
                <groupId>com.fasterxml.jackson.dataformat</groupId>
                <artifactId>jackson-dataformat-xml</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
Run Code Online (Sandbox Code Playgroud)