Add support for target type to BeanRegistry

Closes gh-34560
This commit is contained in:
Sébastien Deleuze
2025-03-10 10:14:28 +01:00
parent c74f897fac
commit a0e2d3a221
8 changed files with 173 additions and 1 deletions

View File

@@ -21,12 +21,15 @@ import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.BeanRegistrar;
import org.springframework.beans.factory.NoSuchBeanDefinitionException;
import org.springframework.beans.factory.config.BeanDefinition;
import org.springframework.beans.factory.support.RootBeanDefinition;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.context.testfixture.beans.factory.GenericBeanRegistrar;
import org.springframework.context.testfixture.beans.factory.SampleBeanRegistrar.Bar;
import org.springframework.context.testfixture.beans.factory.SampleBeanRegistrar.Baz;
import org.springframework.context.testfixture.beans.factory.SampleBeanRegistrar.Foo;
import org.springframework.context.testfixture.beans.factory.SampleBeanRegistrar.Init;
import org.springframework.context.testfixture.context.annotation.registrar.BeanRegistrarConfiguration;
import org.springframework.context.testfixture.context.annotation.registrar.GenericBeanRegistrarConfiguration;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatThrownBy;
@@ -69,4 +72,13 @@ public class BeanRegistrarConfigurationTests {
assertThat(context.getBean(Init.class).initialized).isTrue();
}
@Test
void beanRegistrarWithTargetType() {
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext();
context.register(GenericBeanRegistrarConfiguration.class);
context.refresh();
RootBeanDefinition beanDefinition = (RootBeanDefinition)context.getBeanDefinition("fooSupplier");
assertThat(beanDefinition.getResolvableType().resolveGeneric(0)).isEqualTo(GenericBeanRegistrar.Foo.class);
}
}