Skip to content

Commit 2569aa1

Browse files
committed
Make use of Executable abstraction in ProxyRuntimeHintsRegistrar
1 parent 911d1b0 commit 2569aa1

File tree

1 file changed

+5
-26
lines changed

1 file changed

+5
-26
lines changed

spring-beans/src/main/java/org/springframework/beans/factory/aot/InstanceSupplierCodeGenerator.java

+5-26
Original file line numberDiff line numberDiff line change
@@ -151,12 +151,7 @@ private void registerRuntimeHintsIfNecessary(RegisteredBean registeredBean, Exec
151151
if (registeredBean.getBeanFactory() instanceof DefaultListableBeanFactory dlbf) {
152152
RuntimeHints runtimeHints = this.generationContext.getRuntimeHints();
153153
ProxyRuntimeHintsRegistrar registrar = new ProxyRuntimeHintsRegistrar(dlbf.getAutowireCandidateResolver());
154-
if (constructorOrFactoryMethod instanceof Method method) {
155-
registrar.registerRuntimeHints(runtimeHints, method);
156-
}
157-
else if (constructorOrFactoryMethod instanceof Constructor<?> constructor) {
158-
registrar.registerRuntimeHints(runtimeHints, constructor);
159-
}
154+
registrar.registerRuntimeHints(runtimeHints, constructorOrFactoryMethod);
160155
}
161156
}
162157

@@ -419,33 +414,17 @@ public static boolean hasConstructorWithOptionalParameter(Class<?> beanClass) {
419414
}
420415

421416

422-
private static class ProxyRuntimeHintsRegistrar {
423-
424-
private final AutowireCandidateResolver candidateResolver;
425-
426-
public ProxyRuntimeHintsRegistrar(AutowireCandidateResolver candidateResolver) {
427-
this.candidateResolver = candidateResolver;
428-
}
417+
private record ProxyRuntimeHintsRegistrar(AutowireCandidateResolver candidateResolver) {
429418

430-
public void registerRuntimeHints(RuntimeHints runtimeHints, Method method) {
431-
Class<?>[] parameterTypes = method.getParameterTypes();
419+
public void registerRuntimeHints(RuntimeHints runtimeHints, Executable executable) {
420+
Class<?>[] parameterTypes = executable.getParameterTypes();
432421
for (int i = 0; i < parameterTypes.length; i++) {
433-
MethodParameter methodParam = new MethodParameter(method, i);
422+
MethodParameter methodParam = MethodParameter.forExecutable(executable, i);
434423
DependencyDescriptor dependencyDescriptor = new DependencyDescriptor(methodParam, true);
435424
registerProxyIfNecessary(runtimeHints, dependencyDescriptor);
436425
}
437426
}
438427

439-
public void registerRuntimeHints(RuntimeHints runtimeHints, Constructor<?> constructor) {
440-
Class<?>[] parameterTypes = constructor.getParameterTypes();
441-
for (int i = 0; i < parameterTypes.length; i++) {
442-
MethodParameter methodParam = new MethodParameter(constructor, i);
443-
DependencyDescriptor dependencyDescriptor = new DependencyDescriptor(
444-
methodParam, true);
445-
registerProxyIfNecessary(runtimeHints, dependencyDescriptor);
446-
}
447-
}
448-
449428
private void registerProxyIfNecessary(RuntimeHints runtimeHints, DependencyDescriptor dependencyDescriptor) {
450429
Class<?> proxyType = this.candidateResolver.getLazyResolutionProxyClass(dependencyDescriptor, null);
451430
if (proxyType != null && Proxy.isProxyClass(proxyType)) {

0 commit comments

Comments
 (0)