Restore public type for generated instance supplier of CGLIB proxy
This commit restores the signature of instance suppliers that are exposing a CGLIB proxy. While calling the CGLIB proxy itself, and making it available in BeanInstanceSupplier, is needed internally, such type should not be exposed as it is an internal concern. This was breaking InstanceSupplier.andThen as it expects the public type of the bean to be exposed, not it's eventual CGLIB subclass. Closes gh-33998
This commit is contained in:
@@ -66,8 +66,10 @@ import org.springframework.context.annotation.CommonAnnotationBeanPostProcessor;
|
||||
import org.springframework.context.annotation.ContextAnnotationAutowireCandidateResolver;
|
||||
import org.springframework.context.support.GenericApplicationContext;
|
||||
import org.springframework.context.support.GenericXmlApplicationContext;
|
||||
import org.springframework.context.testfixture.context.annotation.AutowiredCglibConfiguration;
|
||||
import org.springframework.context.testfixture.context.annotation.AutowiredComponent;
|
||||
import org.springframework.context.testfixture.context.annotation.AutowiredGenericTemplate;
|
||||
import org.springframework.context.testfixture.context.annotation.AutowiredMixedCglibConfiguration;
|
||||
import org.springframework.context.testfixture.context.annotation.CglibConfiguration;
|
||||
import org.springframework.context.testfixture.context.annotation.ConfigurableCglibConfiguration;
|
||||
import org.springframework.context.testfixture.context.annotation.GenericTemplateConfiguration;
|
||||
@@ -464,6 +466,33 @@ class ApplicationContextAotGeneratorTests {
|
||||
});
|
||||
}
|
||||
|
||||
@Test
|
||||
void processAheadOfTimeWhenHasCglibProxyAndAutowiring() {
|
||||
GenericApplicationContext applicationContext = new AnnotationConfigApplicationContext();
|
||||
applicationContext.registerBean(AutowiredCglibConfiguration.class);
|
||||
testCompiledResult(applicationContext, (initializer, compiled) -> {
|
||||
GenericApplicationContext freshApplicationContext = toFreshApplicationContext(context -> {
|
||||
context.setEnvironment(new MockEnvironment().withProperty("hello", "Hi"));
|
||||
initializer.initialize(context);
|
||||
});
|
||||
assertThat(freshApplicationContext.getBean("text", String.class)).isEqualTo("Hi World");
|
||||
});
|
||||
}
|
||||
|
||||
@Test
|
||||
void processAheadOfTimeWhenHasCglibProxyAndMixedAutowiring() {
|
||||
GenericApplicationContext applicationContext = new AnnotationConfigApplicationContext();
|
||||
applicationContext.registerBean(AutowiredMixedCglibConfiguration.class);
|
||||
testCompiledResult(applicationContext, (initializer, compiled) -> {
|
||||
GenericApplicationContext freshApplicationContext = toFreshApplicationContext(context -> {
|
||||
context.setEnvironment(new MockEnvironment().withProperty("hello", "Hi")
|
||||
.withProperty("world", "AOT World"));
|
||||
initializer.initialize(context);
|
||||
});
|
||||
assertThat(freshApplicationContext.getBean("text", String.class)).isEqualTo("Hi AOT World");
|
||||
});
|
||||
}
|
||||
|
||||
@Test
|
||||
void processAheadOfTimeWhenHasCglibProxyWithArgumentsUseProxy() {
|
||||
GenericApplicationContext applicationContext = new AnnotationConfigApplicationContext();
|
||||
|
||||
Reference in New Issue
Block a user