Java Spring:用@RequestMapping和@ExceptionHandler对方法进行注释?

Java Spring:用@RequestMapping和@ExceptionHandler对方法进行注释?,java,spring,spring-mvc,request-mapping,Java,Spring,Spring Mvc,Request Mapping,我最近偶然发现了一些以前在此表单中没有见过的代码。也许这里有人能帮我更好地了解发生了什么 也就是说,我找到了一个用@RequestMapping和@ExceptionHandler注释的方法。我认为前者用于处理请求,而后者用于处理异常,因此我认为通常使用两种注释中的一种,但不能同时使用两种注释 我在这里找到了代码片段: 代码片段是: @RequestMapping(produces = "application/json") @ExceptionHandler(Exception.class)

我最近偶然发现了一些以前在此表单中没有见过的代码。也许这里有人能帮我更好地了解发生了什么

也就是说,我找到了一个用
@RequestMapping
@ExceptionHandler
注释的方法。我认为前者用于处理请求,而后者用于处理异常,因此我认为通常使用两种注释中的一种,但不能同时使用两种注释

我在这里找到了代码片段:

代码片段是:

@RequestMapping(produces = "application/json")
@ExceptionHandler(Exception.class)
@ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR)
public @ResponseBody ErrorEntity handleServiceException(Exception exception) {
    log.error(exception.getMessage(), exception);
    ErrorEntity errorEntity = createErrorEntity(null, exception.getMessage(),
                                                exception.getLocalizedMessage());
    return errorEntity;
}
我有两个问题:

  • 根据,
    @RequestMapping
    方法的未注释方法参数(不属于某些特殊类型)使用
    @modeldattribute
    进行隐式注释(请参阅上述链接下表格末尾的“任何其他参数”)。那么在上面的代码片段中,
    异常
    参数是否也用
    @modeldattribute
    进行了隐式注释?如果是,这有意义吗
  • 使用
    @RequestMapping
    @ExceptionHandler
    对方法进行注释通常有意义吗(例如,处理请求和异常),或者这是一种糟糕的形式
  • 好问题。 我会说试试这个。在控制器上,采用两种方法。在一个方法中,使用justrequestmethod并通过接受页面中的模型属性来编写代码。 在此方法上,为NullPointerException创建一个场景

    在方法2上,注释RequestMapping和ExceptionHandler。您可以看到是否正在使用ModelAttributes从方法1到方法2获取请求、响应

    如果是,那么这将帮助我们评估异常并处理需要模型属性值的无效场景

    同样根据上面粘贴的解释,ModelAttribute对于RequestMapping是隐式的,而不是对于控制器方法上的所有注释

    请告诉我们。

    好问题。 我会说试试这个。在控制器上,采用两种方法。在一个方法中,使用justrequestmethod并通过接受页面中的模型属性来编写代码。 在此方法上,为NullPointerException创建一个场景

    在方法2上,注释RequestMapping和ExceptionHandler。您可以看到是否正在使用ModelAttributes从方法1到方法2获取请求、响应

    如果是,那么这将帮助我们评估异常并处理需要模型属性值的无效场景

    同样根据上面粘贴的解释,ModelAttribute对于RequestMapping是隐式的,而不是对于控制器方法上的所有注释


    请让我们知道。

    此处
    @RequestMapping
    用于仅定义不用于请求url映射的响应类型,以及
    @ExceptionHandler
    用于清除异常类的映射,以便在应用程序中的任何位置,此方法将执行的任何控制器方法都会引发异常。此处
    @RequestMapping
    用于仅定义不用于请求url映射的响应类型,以及
    @ExceptionHandler
    用于清除异常类的映射,以便在应用程序中的任何位置,从该方法将执行的任何控制器方法引发异常。