Skip to content

Commit affccba

Browse files
committed
Simplify AOT contribution for scoped proxies
This commit makes sure that a `ScopedProxyFactoryBean` is exposed in the container, rather than its underlying proxy. Previously, any lifecycle method that the proxy target exposed were invoked in the container. This is a complementary fix to gh-29335
1 parent 7f1990e commit affccba

File tree

1 file changed

+2
-5
lines changed

1 file changed

+2
-5
lines changed

spring-aop/src/main/java/org/springframework/aop/scope/ScopedProxyBeanRegistrationAotProcessor.java

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -145,13 +145,11 @@ public CodeBlock generateInstanceSupplierCode(GenerationContext generationContex
145145

146146
GeneratedMethod generatedMethod = beanRegistrationCode.getMethods()
147147
.add("getScopedProxyInstance", method -> {
148-
Class<?> beanClass = this.targetBeanDefinition.getResolvableType()
149-
.toClass();
150148
method.addJavadoc(
151149
"Create the scoped proxy bean instance for '$L'.",
152150
this.registeredBean.getBeanName());
153151
method.addModifiers(Modifier.PRIVATE, Modifier.STATIC);
154-
method.returns(beanClass);
152+
method.returns(ScopedProxyFactoryBean.class);
155153
method.addParameter(RegisteredBean.class,
156154
REGISTERED_BEAN_PARAMETER_NAME);
157155
method.addStatement("$T factory = new $T()",
@@ -162,8 +160,7 @@ public CodeBlock generateInstanceSupplierCode(GenerationContext generationContex
162160
method.addStatement(
163161
"factory.setBeanFactory($L.getBeanFactory())",
164162
REGISTERED_BEAN_PARAMETER_NAME);
165-
method.addStatement("return ($T) factory.getObject()",
166-
beanClass);
163+
method.addStatement("return factory");
167164
});
168165
return CodeBlock.of("$T.of($L)", InstanceSupplier.class,
169166
generatedMethod.toMethodReference().toCodeBlock());

0 commit comments

Comments
 (0)