Java 打包的Spring引导应用程序不会将rest api错误解析为消息

Java 打包的Spring引导应用程序不会将rest api错误解析为消息,java,spring,spring-boot,Java,Spring,Spring Boot,我有一个spring boot应用程序,目前正在使用mvnw spring boot:run 我已经设置了这样一个自定义异常 @ResponseStatus(value = HttpStatus.BAD_REQUEST) public class InvalidEntityException extends Exception { public InvalidEntityException() { super(); } public InvalidEn

我有一个spring boot应用程序,目前正在使用
mvnw spring boot:run
我已经设置了这样一个自定义异常

@ResponseStatus(value = HttpStatus.BAD_REQUEST)
public class InvalidEntityException extends Exception {

    public InvalidEntityException() {
        super();
    }

    public InvalidEntityException(String message) {
        super(message);
    }

    public InvalidEntityException(String message, Throwable cause) {
        super(message, cause);
    }

    public InvalidEntityException(Throwable cause) {
        super(cause);
    }
}
在rest控制器的方法中,我可以抛出这个异常,在Spring引导日志中我可以看到
已解决[foo.bar.InvalidEntityException:错误消息。]

在JSON响应中,我的数据如下所示:

error: "Bad Request"
message: "Error message"
path: "/resource/request"
status: 400
timestamp: "2021-06-06T04:12:39.759+00:00"
但是,当我运行
mvn clean package
并使用
java-jar out.jar
运行output.jar文件并在此控制器上调用一个方法时,我不再看到消息
Resolved[foo.bar.InvalidEntityException:Error message.]
并且我的JSON响应看起来像这样,消息丢失了

error: "Bad Request"
message: ""
path: "/resource/request"
status: 400
timestamp: "2021-06-06T04:12:39.759+00:00"

mvnw spring boot:run
运行我的springboot应用程序与运行.jar有什么区别?我希望在解决错误消息时有相同的行为

我怀疑您正在使用Spring Boot的devtools模块。它的设计目的是使应用程序开发更容易,并且在将应用程序作为打包jar运行时自动禁用

Devtools将
spring.mvc.log解析的异常设置为
true
。这将导致记录
已解决[foo.bar.InvalidEntityException:错误消息]

Devtools还设置
服务器。错误。将消息
包含到
始终
。这将导致异常消息包含在错误响应中。在非开发环境中,应小心设置此属性。您需要确保应用程序的异常消息不会泄漏您不希望恶意客户端看到的信息