gpt4 book ai didi

spring - Jersey ExceptionMapper 不映射异常

转载 作者:行者123 更新时间:2023-12-01 18:11:58 27 4
gpt4 key购买 nike

我的 Spring Boot + Jersey REST 服务无法按预期工作。

EmailExistsException 在 UserController 中抛出,但我只收到错误 500。一直都是。而且我的异常没有被记录。

我怀疑异常处理存在一些配置问题,但不知道在哪里设置。有什么建议吗?

@POST
@Path("register")
@Produces(MediaType.APPLICATION_JSON)
public Response register(NewUserPayload newUserPayload) throws EmailExistsException, MessagingException

EmailExistsExceptionMapper

@Provider
public class EmailExistsExceptionMapper extends AbstractExceptionMapper implements
ExceptionMapper<EmailExistsException>
{
@Override
public Response toResponse(EmailExistsException e)
{
ResponseEntity re = new ResponseEntity(org.springframework.http.HttpStatus.BAD_REQUEST);

return this.errorResponse(HttpStatus.BAD_REQUEST_400, re, e);
}
}

抽象异常映射器

@Slf4j
public abstract class AbstractExceptionMapper
{
protected Response errorResponse(int status, ResponseEntity responseEntity, Throwable t)
{
StringWriter sw = new StringWriter();
PrintWriter pw = new PrintWriter(sw);
t.printStackTrace(pw);
log.error(sw.toString()); // logging stack trace.

return customizeResponse(status, responseEntity);
}

private Response customizeResponse(int status, ResponseEntity responseEntity)
{
return Response.status(status).entity(responseEntity).build();
}
}

构建.gradle

compile("org.springframework.boot:spring-boot-starter-web") {
exclude module: 'spring-boot-starter-tomcat'
}
compile "org.springframework.boot:spring-boot-starter-jetty"
compile "org.springframework.boot:spring-boot-starter-security"
compile "org.springframework.boot:spring-boot-starter-aop"
compile "org.springframework.boot:spring-boot-starter-data-jpa"
compile "org.springframework.boot:spring-boot-starter-thymeleaf"
compile "org.springframework.boot:spring-boot-starter-jersey"
compile 'org.springframework.boot:spring-boot-starter-mail'

最佳答案

解决我的问题的答案:

我已经把packages("package.name");这是我的根包名称,异常映射器工作起来就像一个魅力。

@Component
@ApplicationPath("/api")
public class JerseyConfig extends ResourceConfig
{
public JerseyConfig()
{
packages("package.name");
register(UserController.class);
register(TimezoneController.class);
}
}

关于spring - Jersey ExceptionMapper 不映射异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27982948/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com