我使用 Java8 和 SpringBoot 使用 Maven 创建了一个微服务。 我们将其称为 MicroServiceA
它有返回 ResponseEntity 对象的 Controller ,如下所示:
@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
}
}
当我启动此服务并在任何浏览器中验证它时:http://localhost:8073/api/all/ ,我显示了 JSON 响应。
现在,如果我想将我的服务引入 EUREKA 服务注册中心,那么我需要进行以下更改。
- 创建 EUREKA 服务器微服务。我启动它 - http://localhost:8761/
- 对 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>
转到 application.yml 并添加以下内容:
eureka:
client:
registerWithEureka: true
fetch-registry: true
service-url:
defaultZone: http://localhost:8761/eureka/
一旦我启动服务,我就开始在服务器 http://localhost:8761/ 上看到它
现在我再次转到浏览器并尝试检查我的微服务 http://localhost:8073/api/all/我看到的是 XML 而不是 JSON。
我什至尝试通过添加修改我的微服务 Controller 来修复它 我的方法的注释:
@Produces( { MediaType.APPLICATION_JSON} )
但是我也看到了 XML 而不是 JSON。
我是否遗漏了 EUREKA 的某些内容或其正常行为?如果是,我该如何解决?
最佳答案
如果您使用旧版本的 Spring Cloud Starter,您可能需要排除 Jackson 数据格式 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>
关于java - Eureka 的 Springboot 错误,浏览器显示 xml 而不是 json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56839197/