当前位置: 首页 > 知识库问答 >
问题:

控件建议的异常处理程序在使用Spring Boot的Rest API获取请求中不工作。如何解决?

须新
2023-03-14

我有一个使用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);
        
    }

我的特例课


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

// constructor

}

我的全局异常处理程序注释使用@Controlller建议

@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);

    }
     
    
}

当我直接在控制器内部使用异常处理程序代码时,它似乎可以工作,但在用@controller Advice注释的类中使用异常处理程序时,根本不会调用它,我会得到默认的500内部服务器错误。我附上了我的项目目录结构的图片。我很努力,但无法解决这个问题

我的项目目录strcuure

共有1个答案

尤祖鹤
2023-03-14

这可能是因为如果不指定,spring会使用约定而不是配置。spring检查的其中一个包是“例外”包,请尝试将ControllerAdvice放在那里。如果不起作用,请尝试在应用程序类中指定ControllerAdvice的包。

 类似资料:
  • 使用最新版本的SpringBoot(1.1.3. RELEASE),我正在尝试一个非常简单的rest应用程序。我有一个异常处理程序来处理由错误输入引起的验证错误。如果我发出POST请求,异常处理程序会触发。但是,如果我有补丁或放置请求,它不会触发。可能会发生什么? 异常处理程序类 主要应用类 域类 repository类 此POST请求已正确处理。网站应该是URL,在这个请求中不是,因此,它正确地

  • 我的RestController类: 我的ExceptionHandler: 例外响应:

  • 我有一个带post请求的控制器。我试图用一个简单的NotNull注释验证POJO。我正在使用ControllerAdvice来处理异常。 所以我尝试使用它,但当我启动应用程序时,我得到了以下信息: 因此,我想为BindException创建自己的处理程序,但当我为BindException类创建ExceptionHandler时,spring应用程序不会启动。如果我注释掉handleBindExc

  • 我有以下情况,我试图看看是否有解决方案: 两个Spring服务调用必须并行进行(一个是现有的服务调用/逻辑,另一个是新添加的服务调用) 然而,一条快乐的道路应该是直截了当的,当涉及到服务发出的错误时,应该遵守以下规则: > 如果其中只有一个失败,则通过另一个服务(异步)记录错误,并且API只返回成功服务的结果--这可以通过相应的线程来完成。 我的问题是,因为这些服务返回某个对象的列表,即使我使用并

  • 我想为我的应用程序使用自定义异常处理程序。但是,它不能正常工作。 ApplicationExceptionHandler.java authFilterRegistration.java ErrorEntity.java 使用这些代码,我希望有一个像这样的异常错误 这是的实例,但我得到了以下输出 从示例中可以清楚地看出,我无法完全覆盖默认的Java异常。仅更改成功的消息部分。我错过什么了吗?

  • 我试图根据Spring的RequestMapping注释方法上存在的注释来实现一些逻辑。 所以我在我的方法中有一个实例,我想问Spring“给我一个方法,它将被调用来处理这个请求”,所以我可以使用反射API来询问我的注释是否存在或不存在,所以我可以更改处理。 有没有什么简单的方法可以从Spring MVC获取这些信息?