Spring boot 删除“;跟踪“;来自ResponseStatusException的字段

Spring boot 删除“;跟踪“;来自ResponseStatusException的字段,spring-boot,Spring Boot,在我的spring控制器中,如果没有找到实体,我将返回一个ResponseStatusException,如下所示: @GetMapping("/categories/{id}") public ResponseEntity<Category> getCategoryById(@PathVariable(value = "id") String id) { try { return new ResponseEntity<Category>(cate

在我的spring控制器中,如果没有找到实体,我将返回一个
ResponseStatusException
,如下所示:

@GetMapping("/categories/{id}")
  public ResponseEntity<Category> getCategoryById(@PathVariable(value = "id") String id) {
    try {
      return new ResponseEntity<Category>(categoryService.findById(id), HttpStatus.OK);
    } catch (CategoryNotFoundException ex) {
      throw new ResponseStatusException(HttpStatus.NOT_FOUND, ex.getMessage());
    }
  }
但是响应还包括一个长字段
“trace”
,带有嵌套的异常。
有没有办法去掉跟踪字段?

如果依赖项中有“spring boot devtools”,那么“跟踪”字段似乎就存在了。 排除devtools后,我在输出中没有看到这样的跟踪


希望有帮助。

spring boot devtools
设置属性
服务器。错误。将stacktrace
包含到始终

您可以在
应用程序中保留devtools,同时删除跟踪。yml

server:
  error:
    include-stacktrace: on_trace_param

打开
application.properties
并添加以下行:

server.error.include-stacktrace=never

我知道我参加聚会迟到了,但我最近遇到了这种情况,并用另一种解决方案解决了问题,因为在我的情况下,上述解决方案都不起作用

我使用
Spring boot devtools
,它会自动设置
服务器。错误。include stacktrace=always

因此,我通过覆盖exception类中的
fillInStackTrace
方法来抑制堆栈跟踪,如下所示

public class DuplicateFoundException extends RuntimeException {
    @Override
    public synchronized Throwable fillInStackTrace() {
        return this;
    }
}
ps1:我参考了这篇文章

ps2:您也可以在其他答案中尝试以下建议的解决方案:

(在我的情况下,这些都不起作用)

如果您使用的是
application.properties
文件,请在属性文件中添加以下行

server.error.include-stacktrace=on_trace_param
如果您使用的是
application.yml
文件,请在yml文件中添加以下行

server:
  error:
    include-stacktrace: on_trace_param

是的,“trace”字段在没有devtools的情况下消失了,谢谢!它只能在application.properties中配置为@KimchiMan answer中提到的“server.error.include stacktrace=never”。@aschmid我正在添加属性“server.error.include stacktrace=never”谢谢!简单,容易,准确!为我工作!谢谢
server:
  error:
    include-stacktrace: on_trace_param