java - @ControllerAdvice 在处理异常方面比 @ExceptionHandle

Spring 3.2介绍@ControllerAdvice用于处理 Spring MVC 应用程序中的异常的注释。但在此版本之前,Spring 有 @ExceptionHandlerHandlerExceptionResolver在 Spring MVC 应用程序中处理异常。那为什么Spring 3.2引入了@ControllerAdvice处理异常的注释?我坚信Spring 3.2 引入了@ControllerAdvice注释以解决 @ExceptionHandler 的限制或 HandlerExceptionResolver或使异常处理更强大

谁能解释一下@ControllerAdvice的优点?超过 @ExceptionHandlerHandlerExceptionResolver处理异常?

最佳答案

@ExceptionHandler

@ExceptionHandlerController 级别 工作,它只对那个特定的 Controller 有效,而不是对整个应用程序全局有效。 p>

HandlerExceptionResolver

这将解决应用程序抛出的任何异常。它用于将标准 Spring 异常解析到其相应的 HTTP 状态代码。它无法控制响应的正文,这意味着它没有为响应的正文设置任何内容。它确实将状态代码映射到响应上,但 正文为空

@ControllerAdvice

@ControllerAdvice 用于 Spring MVC 应用程序中的全局错误处理。它还可以完全控制响应的主体和状态代码。

关于java - @ControllerAdvice 在处理异常方面比 @ExceptionHandler 或 HandlerExceptionResolver 有什么优势?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35323174/

相关文章:

java - Spring Boot 是否可以使用 JAR 包装来提供 JSP?

java - SpringBoot - BeanDefinitionOverrideExceptio

spring - 配置多个数据源后无法设置JPA命名策略(Spring 1.4.1/Hibernat

java - 在 Spring Boot 中读取环境变量

java - 我无法使用断点进行调试

java - 使用 restAssured 测试 Spring Boot Rest 应用程序

java - 如何在spring mvc中使用带有freemarker的消息?

database - Spring Batch Framework - 自动创建批处理表

java - Spring Security 中的 "principal"是什么?

java - 为什么 Spring 的 jdbcTemplate.batchUpdate() 这么慢