【问题标题】:RESTEasy ExceptionMapper not working with Spring BootRESTEasy ExceptionMapper 不适用于 Spring Boot
【发布时间】:2015-03-29 18:45:33
【问题描述】:


我们使用 Spring Boot 进行集成测试,使用 RESTEasy 进行 REST URL。我为 BadRequestException 配置了一个 ExceptionMapper,因为我为发送错误请求时引发的异常添加了一个测试用例。为了抑制结果引发的 RESTEasy 异常,我添加了一个扩展 RESTEasy 的 ExceptionMapper 的 BadRequestExceptionHandler。我使用的是“@SpringBootApplication”,但添加了“@ComponentScan”,includeFilters 将类型设置为 ANNOTATION 并将值设置为 Provider.class。我已将我的处理程序类标记为@Component,因此 Spring 能够创建 bean(自动装配工作)但 RESTEasy 没有选择此处理程序,我继续在日志中看到异常。

谁能指出我做错了什么?

@Provider
@Component
public class BadRequestExceptionHandler implements ExceptionMapper<BadRequestException> {
    @Override
    public Response toResponse(BadRequestException exception) {
        return Response.status(Response.Status.BAD_REQUEST)
                      .entity(exception.getMessage())
                      .build();
    }
}

@SpringBootApplication
@ComponentScan(includeFilters = @ComponentScan.Filter(type = FilterType.ANNOTATION, value = Provider.class))
public class TestApplication extends SpringBootServletInitializer {
...
}

谢谢,
稻谷

【问题讨论】:

    标签: spring spring-boot resteasy


    【解决方案1】:

    我知道这与您的问题没有直接关系,但这实际上可能会解决您的问题。可以使用 RESTEasy 作为 JAX-RS 实现来构建 Spring Boot REST 应用程序,方法是使用这个 RESTEasy Spring Boot 启动器:

    com.paypal.springboot:resteasy-spring-boot-starter

    查看项目网站:https://github.com/paypal/resteasy-spring-boot/

    【讨论】:

      【解决方案2】:

      我正在使用自定义的 Undertow 嵌入式服务器,该服务器使用自定义的 JaxRs 应用程序类(在我的任务开始之前已声明,因此重用它感觉更好)。所以我必须设置一个使用我的自定义异常映射器配置的提供程序工厂,并在 Resteasy 部署对象上设置提供程序工厂。代码如下:

      ResteasyDeployment deployment = new ResteasyDeployment();
      ResteasyProviderFactory providerFactory =
                  ResteasyProviderFactory.getInstance();
      providerFactory.addExceptionMapper(BadRequestExceptionMapper.class); // My custom exception mapper
      deployment.setProviderFactory(providerFactory);
      

      谢谢, 稻谷

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-04-13
        • 2018-10-18
        • 2011-03-09
        • 2014-10-29
        • 2012-12-20
        • 1970-01-01
        • 2018-07-04
        • 2023-03-26
        相关资源
        最近更新 更多