简体   繁体   English

ControllerAdvice 的异常处理程序在使用 Spring Boot 的 Rest API 获取请求中不起作用。 如何解决?

[英]Exception Handler of ControllerAdvice Not working in Rest API Get Request using Spring Boot. How to resolve?

I have a Rest Controller using Spring Boot我有一个使用 Spring Boot 的 Rest 控制器

@RestController
@RequestMapping("/api")
public class TeamController {

@RequestMapping(value = "/getmember/{memberId}",method = {RequestMethod.GET})
    public ResponseEntity<TeamMember> findmember(@PathVariable("memberId") int theId){
        
        TeamMember teamMember = teamService.findMember(theId);
        if( null == teamMember) {
            throw new TeamMemberNotFoundException();
        }
        return new ResponseEntity<TeamMember>(teamMember,HttpStatus.OK);
        
    }

My Exception Class我的异常类


@ResponseStatus(value = HttpStatus.NOT_FOUND, reason = "Member not found")
public class TeamMemberNotFoundException extends RuntimeException {

// constructor

}

My Global Exception Handler annotated using @ControllerAdvice使用 @ControllerAdvice 注释的我的全局异常处理程序

@ControllerAdvice
public class TeamMemberNotFoundExceptionHandler extends ResponseEntityExceptionHandler {
    
    
    @ExceptionHandler(TeamMemberNotFoundException.class)
    public ResponseEntity<TeamMemberNotFoundErrorResponse> handleException(TeamMemberNotFoundException e) {

        TeamMemberNotFoundErrorResponse t = new TeamMemberNotFoundErrorResponse(HttpStatus.NOT_FOUND.value(),"Dude he doesnt exist wake up",System.currentTimeMillis());
        
        return new ResponseEntity<TeamMemberNotFoundErrorResponse>(t, HttpStatus.NOT_FOUND);

    }
     
    
}

When Im using the Exception Handler code inside the controller directly it seems to work but the Exception Handler when used in the Class annotated with @Controller Advice is not called at all and I get default 500 Internal Server error.当我直接在控制器内使用异常处理程序代码时,它似乎可以工作,但是在用 @Controller Advice 注释的类中使用的异常处理程序根本没有被调用,我得到默认的 500 内部服务器错误。 I have attached picture of my project directory structure.我附上了我的项目目录结构的图片。 Im trying hard but unable to resolve this我很努力,但无法解决这个问题

My project directory strcuture我的项目目录结构

This may happen because spring uses convention over configuration if you don't specify.如果您不指定,这可能是因为 spring 使用约定而不是配置。 One of the packages spring checks is the "exception" package, try putting your ControllerAdvice there. spring 检查的包之一是“异常”包,尝试将您的 ControllerAdvice 放在那里。 If it doesn't work, try specifying the package of your ControlerAdvice in your Application class.如果它不起作用,请尝试在 Application 类中指定 ControlerAdvice 的包。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM