Merge branch '6.1.x'
# Conflicts: # spring-beans/src/main/java/org/springframework/beans/factory/support/GenericTypeAwareAutowireCandidateResolver.java
This commit is contained in:
@@ -409,15 +409,17 @@ class AnnotationConfigApplicationContextTests {
|
||||
bd2.setTargetType(ResolvableType.forClassWithGenerics(FactoryBean.class, ResolvableType.forClassWithGenerics(GenericHolder.class, Integer.class)));
|
||||
bd2.setLazyInit(true);
|
||||
context.registerBeanDefinition("fb2", bd2);
|
||||
context.registerBeanDefinition("ip", new RootBeanDefinition(FactoryBeanInjectionPoints.class));
|
||||
RootBeanDefinition bd3 = new RootBeanDefinition(FactoryBeanInjectionPoints.class);
|
||||
bd3.setScope(RootBeanDefinition.SCOPE_PROTOTYPE);
|
||||
context.registerBeanDefinition("ip", bd3);
|
||||
context.refresh();
|
||||
|
||||
assertThat(context.getBean("ip", FactoryBeanInjectionPoints.class).factoryBean).isSameAs(context.getBean("&fb1"));
|
||||
assertThat(context.getBean("ip", FactoryBeanInjectionPoints.class).factoryResult).isSameAs(context.getBean("fb1"));
|
||||
assertThat(context.getType("&fb1")).isEqualTo(GenericHolderFactoryBean.class);
|
||||
assertThat(context.getType("fb1")).isEqualTo(GenericHolder.class);
|
||||
assertThat(context.getBeanNamesForType(FactoryBean.class)).hasSize(2);
|
||||
assertThat(context.getBeanNamesForType(GenericHolderFactoryBean.class)).hasSize(1);
|
||||
assertThat(context.getBean("ip", FactoryBeanInjectionPoints.class).factoryBean).isSameAs(context.getBean("&fb1"));
|
||||
assertThat(context.getBean("ip", FactoryBeanInjectionPoints.class).factoryResult).isSameAs(context.getBean("fb1"));
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -425,7 +427,7 @@ class AnnotationConfigApplicationContextTests {
|
||||
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext();
|
||||
RootBeanDefinition bd1 = new RootBeanDefinition();
|
||||
bd1.setBeanClass(GenericHolderFactoryBean.class);
|
||||
bd1.setTargetType(ResolvableType.forClassWithGenerics(FactoryBean.class, ResolvableType.forClassWithGenerics(GenericHolder.class, Object.class)));
|
||||
bd1.setTargetType(ResolvableType.forClassWithGenerics(FactoryBean.class, ResolvableType.forClassWithGenerics(GenericHolder.class, String.class)));
|
||||
bd1.setLazyInit(true);
|
||||
context.registerBeanDefinition("fb1", bd1);
|
||||
RootBeanDefinition bd2 = new RootBeanDefinition();
|
||||
@@ -433,13 +435,19 @@ class AnnotationConfigApplicationContextTests {
|
||||
bd2.setTargetType(ResolvableType.forClassWithGenerics(FactoryBean.class, ResolvableType.forClassWithGenerics(GenericHolder.class, Integer.class)));
|
||||
bd2.setLazyInit(true);
|
||||
context.registerBeanDefinition("fb2", bd2);
|
||||
context.registerBeanDefinition("ip", new RootBeanDefinition(FactoryResultInjectionPoint.class));
|
||||
RootBeanDefinition bd3 = new RootBeanDefinition(FactoryBeanInjectionPoints.class);
|
||||
bd3.setScope(RootBeanDefinition.SCOPE_PROTOTYPE);
|
||||
context.registerBeanDefinition("ip", bd3);
|
||||
context.refresh();
|
||||
|
||||
assertThat(context.getBean("ip", FactoryResultInjectionPoint.class).factoryResult).isSameAs(context.getBean("fb1"));
|
||||
assertThat(context.getBean("ip", FactoryResultInjectionPoint.class).factoryResult).isSameAs(context.getBean("fb1"));
|
||||
assertThat(context.getType("&fb1")).isEqualTo(GenericHolderFactoryBean.class);
|
||||
assertThat(context.getType("fb1")).isEqualTo(GenericHolder.class);
|
||||
assertThat(context.getBeanNamesForType(FactoryBean.class)).hasSize(2);
|
||||
assertThat(context.getBean("ip", FactoryResultInjectionPoint.class).factoryResult).isSameAs(context.getBean("fb1"));
|
||||
assertThat(context.getBeanNamesForType(FactoryBean.class)).hasSize(2);
|
||||
assertThat(context.getBeanProvider(ResolvableType.forClassWithGenerics(GenericHolder.class, String.class)))
|
||||
.containsOnly(context.getBean("fb1"));
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -453,14 +461,19 @@ class AnnotationConfigApplicationContextTests {
|
||||
bd2.setBeanClass(UntypedFactoryBean.class);
|
||||
bd2.setTargetType(ResolvableType.forClassWithGenerics(GenericHolder.class, Integer.class));
|
||||
context.registerBeanDefinition("fb2", bd2);
|
||||
context.registerBeanDefinition("ip", new RootBeanDefinition(FactoryResultInjectionPoint.class));
|
||||
RootBeanDefinition bd3 = new RootBeanDefinition(FactoryResultInjectionPoint.class);
|
||||
bd3.setScope(RootBeanDefinition.SCOPE_PROTOTYPE);
|
||||
context.registerBeanDefinition("ip", bd3);
|
||||
context.refresh();
|
||||
|
||||
assertThat(context.getBean("ip", FactoryResultInjectionPoint.class).factoryResult).isSameAs(context.getBean("fb1"));
|
||||
assertThat(context.getBean("ip", FactoryResultInjectionPoint.class).factoryResult).isSameAs(context.getBean("fb1"));
|
||||
assertThat(context.getType("&fb1")).isEqualTo(GenericHolderFactoryBean.class);
|
||||
assertThat(context.getType("fb1")).isEqualTo(GenericHolder.class);
|
||||
assertThat(context.getBeanNamesForType(FactoryBean.class)).hasSize(2);
|
||||
assertThat(context.getBeanNamesForType(GenericHolderFactoryBean.class)).hasSize(1);
|
||||
assertThat(context.getBean("ip", FactoryResultInjectionPoint.class).factoryResult).isSameAs(context.getBean("fb1"));
|
||||
assertThat(context.getBeanProvider(ResolvableType.forClassWithGenerics(GenericHolder.class, String.class)))
|
||||
.containsOnly(context.getBean("fb1"));
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -480,6 +493,9 @@ class AnnotationConfigApplicationContextTests {
|
||||
assertThat(context.getType("fb")).isEqualTo(String.class);
|
||||
assertThat(context.getBeanNamesForType(FactoryBean.class)).hasSize(1);
|
||||
assertThat(context.getBeanNamesForType(TypedFactoryBean.class)).hasSize(1);
|
||||
assertThat(context.getBeanProvider(String.class)).containsOnly(context.getBean("fb", String.class));
|
||||
assertThat(context.getBeanProvider(ResolvableType.forClassWithGenerics(FactoryBean.class, String.class)))
|
||||
.containsOnly(context.getBean("&fb"));
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
@@ -18,7 +18,6 @@ package org.springframework.context.annotation;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.junit.jupiter.api.Disabled;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import org.springframework.beans.BeanUtils;
|
||||
@@ -67,8 +66,7 @@ public class Gh32489Tests {
|
||||
}
|
||||
|
||||
@Test
|
||||
@Disabled
|
||||
void resolveFactoryBeanWithMatchingGeneric() {
|
||||
void provideFactoryBeanWithMatchingGenerics() {
|
||||
try (AnnotationConfigApplicationContext context = prepareContext()) {
|
||||
context.refresh();
|
||||
ResolvableType requiredType = ResolvableType.forClassWithGenerics(SimpleRepositoryFactoryBean.class,
|
||||
@@ -78,7 +76,7 @@ public class Gh32489Tests {
|
||||
}
|
||||
|
||||
@Test
|
||||
void resolveFactoryBeanWithFirstNonMatchingGeneric() {
|
||||
void provideFactoryBeanWithFirstNonMatchingGenerics() {
|
||||
try (AnnotationConfigApplicationContext context = prepareContext()) {
|
||||
context.refresh();
|
||||
ResolvableType requiredType = ResolvableType.forClassWithGenerics(SimpleRepositoryFactoryBean.class,
|
||||
@@ -88,7 +86,7 @@ public class Gh32489Tests {
|
||||
}
|
||||
|
||||
@Test
|
||||
void resolveFactoryBeanWithSecondNonMatchingGeneric() {
|
||||
void provideFactoryBeanWithSecondNonMatchingGenerics() {
|
||||
try (AnnotationConfigApplicationContext context = prepareContext()) {
|
||||
context.refresh();
|
||||
ResolvableType requiredType = ResolvableType.forClassWithGenerics(SimpleRepositoryFactoryBean.class,
|
||||
@@ -98,7 +96,7 @@ public class Gh32489Tests {
|
||||
}
|
||||
|
||||
@Test
|
||||
void resolveFactoryBeanTargetTypeWithMatchingGeneric() {
|
||||
void provideFactoryBeanTargetTypeWithMatchingGenerics() {
|
||||
try (AnnotationConfigApplicationContext context = prepareContext()) {
|
||||
context.refresh();
|
||||
ResolvableType requiredType = ResolvableType.forClassWithGenerics(Repository.class,
|
||||
@@ -109,7 +107,7 @@ public class Gh32489Tests {
|
||||
}
|
||||
|
||||
@Test
|
||||
void resolveFactoryBeanTargetTypeWithFirstNonMatchingGeneric() {
|
||||
void provideFactoryBeanTargetTypeWithFirstNonMatchingGenerics() {
|
||||
try (AnnotationConfigApplicationContext context = prepareContext()) {
|
||||
context.refresh();
|
||||
ResolvableType requiredType = ResolvableType.forClassWithGenerics(Repository.class,
|
||||
@@ -119,7 +117,7 @@ public class Gh32489Tests {
|
||||
}
|
||||
|
||||
@Test
|
||||
void resolveFactoryBeanTargetTypeWithSecondNonMatchingGeneric() {
|
||||
void provideFactoryBeanTargetTypeWithSecondNonMatchingGenerics() {
|
||||
try (AnnotationConfigApplicationContext context = prepareContext()) {
|
||||
context.refresh();
|
||||
ResolvableType requiredType = ResolvableType.forClassWithGenerics(Repository.class,
|
||||
@@ -143,21 +141,18 @@ public class Gh32489Tests {
|
||||
|
||||
@Autowired
|
||||
List<SimpleRepositoryFactoryBean<?, ?>> repositoryFactoryies;
|
||||
|
||||
}
|
||||
|
||||
static class RepositoryFactoriesInformationHolder {
|
||||
|
||||
@Autowired
|
||||
List<RepositoryFactoryInformation<?, ?>> repositoryFactoresInformation;
|
||||
|
||||
}
|
||||
|
||||
static class RepositoryFactoryHolder {
|
||||
|
||||
@Autowired
|
||||
SimpleRepositoryFactoryBean<EmployeeRepository, Long> repositoryFactory;
|
||||
|
||||
}
|
||||
|
||||
static class SimpleRepositoryFactoryBean<T, ID> extends RepositoryFactoryBeanSupport<T, ID> {
|
||||
|
||||
Reference in New Issue
Block a user