spring-boot - 创建自定义 ErrorWebExceptionHandler 失败

标签 spring-boot spring-webflux

我正在尝试创建自己的 ErrorWebExceptionHandler在 Spring Boot 2 中通过扩展默认值但我的应用程序无法启动并显示以下消息:

Caused by: java.lang.IllegalArgumentException: Property 'messageWriters' is required
at org.springframework.boot.autoconfigure.web.reactive.error.AbstractErrorWebExceptionHandler.afterPropertiesSet(AbstractErrorWebExceptionHandler.java:214) ~[spring-boot-autoconfigure-2.0.4.RELEASE.jar:2.0.4.RELEASE]

我的处理程序(Kotlin 代码):
@Component
@Order(-2)
class SampleErrorWebExceptionHandler(
    errorAttributes: ErrorAttributes?,
    resourceProperties: ResourceProperties?,
    errorProperties: ErrorProperties?,
    applicationContext: ApplicationContext?
) : DefaultErrorWebExceptionHandler(errorAttributes, resourceProperties, errorProperties, applicationContext) {

    override fun logError(request: ServerRequest, errorStatus: HttpStatus) {
        // do something
    }
}

可能是什么原因?

最佳答案

请尝试在您的构造函数中添加 ServerCodecConfigurer 的依赖项

GlobalErrorWebExceptionHandler(
  ErrorAttributes errorAttributes,
  ResourceProperties resourceProperties,
  ApplicationContext applicationContext,
  ServerCodecConfigurer configurer
) {
    super(errorAttributes, resourceProperties, applicationContext);
    this.setMessageWriters(configurer.getWriters());
}

关于spring-boot - 创建自定义 ErrorWebExceptionHandler 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52497901/

相关文章:

java - 当 HTTP header 无效(包含空格)时提供自定义错误消息

java - 我应该如何获取 javafx spring boot 桌面应用程序的 OAuth2 访问 token ?

java - @PropertySource 未在使用传统 tomcat war 部署的 spring boot 应用程序中获取

java - Spring Webflux TEXT_EVENT_STREAM_VALUE 不流式传输

java - 如何获得客户的IP地址? (Spring WebFlux WebSocket)

java - 使用 Spring Boot 自动转换 RequestBody 期间,ZonedDateTime 的时区更改为 UTC

spring-boot - Spring Boot Jenkins CD/CI 在部署前更改配置文件

spring-boot - @EnableWebFlux 注解有什么用?

java - 在 Oauth2 安全(客户端凭据)资源服务器应用程序中为 WebFluxTest 获取 403 Forbidden Forbidden

spring-boot - 抛出异常Spring Boot Webflux