@RestControllerAdvice @ExceptionHandler Inconsistent behavior with @RestControllerEndpoint #31495
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Hi, I submitted this PR to solve #30899 based on @wilkinsona ’s comment.
When I switched to
BeanFactoryUtils.beansOfTypeIncludingAncestors
, I found that still can't solve the problem, this is because the bean names oforg.springframework.boot.actuate.autoconfigure.web.servlet.CompositeHandlerExceptionResolver
andorg.springframework.web.servlet.handler.HandlerExceptionResolverComposite
are the same.spring-boot/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/web/servlet/WebMvcEndpointChildContextConfiguration.java
Lines 100 to 101 in 837e2ac
So when using
BeanFactoryUtils.beansOfTypeIncludingAncestors
,HandlerExceptionResolverComposite
will be overwritten byCompositeHandlerExceptionResolver
.Maybe we need a variant of
BeanFactoryUtils.beansOfTypeIncludingAncestors
, use collection to collectHandlerExceptionResolver
instead of map, or modify the bean name ofCompositeHandlerExceptionResolver
, I chose the former for now.Closes gh-30899