问题标签 [controller-advice]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
spring-boot - SpringBoot 使用 ControllerAdvice 中的自定义错误处理所有错误
我有一个 REST api spring boot 应用程序并希望处理 ControllerAdvice 中的任何错误,因为我希望有一个自定义的响应格式并且不使用 Spring 默认响应。
例如,像 RequestRejectedException 这样的异常不是通过控制器建议处理的。有没有一种优雅的方法来处理 Spring 上的一个处理程序中的任何可能的错误?
对于 RequestRejectedException 我已经实现了一个 GenericFilterBean 并在那里重新格式化了响应,但希望有一种更统一的方式来处理所有错误。
java - 在 Spring MVC 中将 @ModelAttribute 与 @ControllerAdvice 一起使用时未显示输出消息
我正在尝试借助 ControllerAdvice 将 ModelAttribute 值添加到同一应用程序中的不同页面,但输出消息未显示在 jsp 页面上。
服务控制器.java
ProductsController.java
GlobalAdviceHandler.java
输入.jsp
输出.jsp
先感谢您!!
java - 在 Spring Boot 中处理异常的方法。抛出异常捕获并抛出相同的异常,这是一种不好的做法吗?
我正在使用spring boot,并且正在处理一种处理异常的好方法:
我有这种与存储库交互以获取产品的案例。但是如果数据库存在连接问题怎么办,我不会捕捉到那个异常
我有一个控制器建议来捕获异常并返回一个很好的响应:
我想我可以做这样的事情:
这行得通,但看起来很奇怪,因为我两次抛出 NotFoundException。任何想法?
java - ControllerAdvice 有条件地处理异常
我有一个控制器建议来处理我的 REST 控制器中的异常行为,我遇到了一种情况,即我必须有条件地处理SQLIntegrityConstraintViolationException
具有特定消息的消息(用于重复键的消息),返回 a 409
,让其他消息由默认处理程序(返回500
错误代码)。
我正在考虑两种可能的方法来实现这一目标:
- 在我的条件下,在 else 分支上抛出一个新的准系统
Exception
,所以处理是由 Spring 完成的。 - 显式调用通用异常处理程序(例如
return handleGeneralException(exception)
从我的 else 分支内部)。
我有一种“正确”的方法可以将我的一种异常的一小部分传递ControllerAdvice
给另一个处理程序,而不是“原始”处理程序?
编辑1:我想在我的ControllerAdvice中做这样的事情:
java - Java Spring 异常处理
我有多个控制器,它们的异常在ControllerAdvice
. 所有控制器都使用常见的异常类型(如HttpClientException, DBException
等)。但是有一个特定的控制器,应该以不同的方式处理异常。
在我当前的实现中,这个特定控制器的所有方法都用 try-catch 包装,并CustomException
在出现任何异常时抛出。然后,在ControllerAdvice
我处理这种类型的异常。
但是,我想在控制器方法中处理所有异常ControllerAdvice
以及摆脱CustomException
和尝试捕获。
有没有办法在异常建议中找出源控制器名称?我可以检查它并以不同的方式处理异常。或者也许存在其他一些解决方案?
java - 如何使用 Boot 仅更改 Spring MVC 错误的状态代码?
我正在编写一个使用 RestTemplate 进行下游调用的 Web 应用程序。如果底层服务返回 401 Unauthorized,我想也向调用应用程序返回 401;默认行为是返回 500。我想保留由提供的默认 Spring Boot 错误响应BasicErrorController
;我想要的唯一更改是设置状态码。
在自定义异常中,我只是用 注释异常类@ResponseStatus
,但我不能在这里这样做,因为HttpClientErrorException.Unauthorized
它是由 Spring 提供的。我尝试了两种方法@ControllerAdvice
:
我如何配置 MVC 以继续使用所有内置的引导错误处理,除了显式覆盖状态代码?
java - 在 Spring MVC REST Endpoint 中使用静态对象响应会导致并发问题吗?
在 Spring Boot 2.2 中开发并使用 Spring MVC REST 端点,当发生错误时,我正在发送一个静态对象ControllerAdvice
,例如
使用这种方法,由于这种情况下的响应总是相同的,当多个请求必须发回相同的对象(在这种情况下,ERROR_OBJ
)时是否会产生性能问题/死锁?
spring-boot - MissingServletRequestParameterException 未使用 @ControllerAdvice 捕获
我正在尝试制作一个全局异常处理程序,下面是它的代码。其他异常被捕获,但MissingServletRequestParameterException没有。我也尝试过覆盖handleMissingServletRequestParameter,但没有取得多大成功。知道为什么不处理异常吗?
java - Spring - 将外部 jar 中的异常处理程序用于其他 2 个项目
我有 2 个项目具有相同的异常并使用相同的异常处理程序。所以所有的异常和异常处理程序都被移到了一个外部模块。
异常导入得很好,但似乎没有调用异常处理程序。据我了解,如果我有 @ComponentScan 注释,则应该从外部 jar 调用处理程序。
这是我的异常处理程序的样子:
当异常处理程序单独作为每个项目的一部分时,它工作得很好。然后它在@ControllerAdvice 注释中只有该项目的路径,并且没有@ComponentScan。
带有异常处理程序的外部 jar 当前通过以下方式导入:
spring - Spring ControllerAdvice 全局异常处理程序不返回响应
我有一个 Groovy Spring Boot 微服务,它返回一个帖子列表。请求进入控制器,控制器调用服务类中的方法,如果没有找到帖子,则会抛出自定义错误消息。
我创建了一个用 @ControllerAdvice 注释的控制器,我想拦截错误,以及一个特定于自定义错误的处理程序。它应该返回一个 POJO。目前正在调用 ControllerAdvice 处理程序,但来自微服务的响应是 500 错误
控制器
服务方式
自定义异常类包 com.news.exception
要退回的 POGO
以及带有@ControllerAdvice 注解的全局异常处理程序
调试时,代码尽可能远
然而什么都没有返回。使用 Postman 返回的消息是:
这里有什么明显的错误吗?