Rationalize hints required for annotations

This commit updates RuntimeHintsUtils to focus on registering a JDK
proxy only as annotations of annotated elements that have at least
an introspection hints are visible out-of-the-box.

This commit also removes unnecessary hints and adapt `@Reflective` to
detect if a hint is required using the introduced
MergedAnnotation#isSynthesizable.

See gh-28967
This commit is contained in:
Stephane Nicoll
2022-08-16 14:15:02 +02:00
parent 32346b8382
commit 4f0c879778
17 changed files with 101 additions and 398 deletions

View File

@@ -36,15 +36,12 @@ public final class WebAnnotationsRuntimeHintsRegistrar implements RuntimeHintsRe
@Override
public void registerHints(RuntimeHints hints, @Nullable ClassLoader classLoader) {
Stream.of(Controller.class, ControllerAdvice.class, CookieValue.class,
CrossOrigin.class, DeleteMapping.class, ExceptionHandler.class,
GetMapping.class, InitBinder.class, Mapping.class, MatrixVariable.class,
ModelAttribute.class, PatchMapping.class, PathVariable.class,
PostMapping.class, PutMapping.class, RequestAttribute.class,
RequestBody.class, RequestHeader.class, RequestMapping.class,
RequestParam.class, RequestPart.class, ResponseBody.class,
ResponseStatus.class, RestController.class, RestControllerAdvice.class,
SessionAttribute.class, SessionAttributes.class).forEach(
annotationType -> RuntimeHintsUtils.registerAnnotation(hints, annotationType));
CrossOrigin.class, MatrixVariable.class, ModelAttribute.class,
PathVariable.class, RequestAttribute.class, RequestHeader.class,
RequestMapping.class, RequestParam.class, RequestPart.class,
ResponseStatus.class, SessionAttribute.class, SessionAttributes.class)
.forEach(annotationType ->
RuntimeHintsUtils.registerSynthesizedAnnotation(hints, annotationType));
}
}