SpringBoot项目,返回数据为xml格式,正常请求能返回xml,但是配置全局捕获异常后却返回json,demo如下
Entity:
@XmlRootElement
@Builder
@Data
public class User {
private String name;
private String sex;
}
Controller:
@RestController
public class TestController {
@PostMapping(value = "test", produces = "application/xml;charset=UTF-8")
public User test() {
if (true) {
throw new CustomizeException("9999", "测试异常");
}
return null;
}
@PostMapping(value = "test1", produces = "application/xml;charset=UTF-8")
public User test1() {
return User.builder().name("Cch").sex("male").build();
}
}
自定义异常类:
@Getter
@Setter
public class CustomizeException extends RuntimeException {
private String code;
private String msg;
public CustomizeException(String code, String msg) {
this.code = code;
this.msg = msg;
}
}
异常处理器:
@RestControllerAdvice
public class MyExceptionHandler {
@ExceptionHandler(CustomizeException.class)
public User testExceprion(CustomizeException e) {
return User.builder().name("Sxr").sex("female").build();
}
}
pom:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.dataformat</groupId>
<artifactId>jackson-dataformat-xml</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
测试结果如下:
捕获异常以后返回类型就变成json