Reverse engineer documentation for Bean Override internals

This commit is contained in:
Sam Brannen
2024-09-27 14:44:55 +02:00
parent ded5c13e19
commit c3ff6cf319
2 changed files with 46 additions and 38 deletions

View File

@@ -51,6 +51,7 @@ import static org.mockito.Mockito.mock;
*
* @author Simon Baslé
* @author Stephane Nicoll
* @author Sam Brannen
*/
class BeanOverrideBeanFactoryPostProcessorTests {
@@ -200,7 +201,7 @@ class BeanOverrideBeanFactoryPostProcessorTests {
}
@Test
void allowReplaceDefinitionWhenSingletonDefinitionPresent() {
void replaceBeanByNameWithMatchingBeanDefinitionWithExplicitSingletonScope() {
AnnotationConfigApplicationContext context = createContext(CaseByName.class);
RootBeanDefinition definition = new RootBeanDefinition(String.class, () -> "ORIGINAL");
definition.setScope(BeanDefinition.SCOPE_SINGLETON);
@@ -212,7 +213,7 @@ class BeanOverrideBeanFactoryPostProcessorTests {
}
@Test
void copyDefinitionPrimaryFallbackAndScope() {
void replaceBeanByNameWithMatchingBeanDefinitionRetainsPrimaryFallbackAndScopeProperties() {
AnnotationConfigApplicationContext context = createContext(CaseByName.class);
context.getBeanFactory().registerScope("customScope", new SimpleThreadScope());
RootBeanDefinition definition = new RootBeanDefinition(String.class, () -> "ORIGINAL");
@@ -232,22 +233,22 @@ class BeanOverrideBeanFactoryPostProcessorTests {
}
@Test
void createDefinitionShouldSetQualifierElement() {
void qualifiedElementIsSetToBeanOverrideField() {
AnnotationConfigApplicationContext context = createContext(CaseByNameWithQualifier.class);
context.registerBeanDefinition("descriptionBean", new RootBeanDefinition(String.class, () -> "ORIGINAL"));
assertThatNoException().isThrownBy(context::refresh);
assertThat(context.getBeanDefinition("descriptionBean"))
.isInstanceOfSatisfying(RootBeanDefinition.class, this::isTheValueField);
.isInstanceOfSatisfying(RootBeanDefinition.class, this::qualifiedElementIsField);
}
private void isTheValueField(RootBeanDefinition def) {
assertThat(def.getQualifiedElement()).isInstanceOfSatisfying(Field.class, field -> {
assertThat(field.getDeclaringClass()).isEqualTo(CaseByNameWithQualifier.class);
assertThat(field.getName()).as("annotated field name")
.isEqualTo("description");
});
private void qualifiedElementIsField(RootBeanDefinition def) {
assertThat(def.getQualifiedElement()).isInstanceOfSatisfying(Field.class,
field -> {
assertThat(field.getDeclaringClass()).isEqualTo(CaseByNameWithQualifier.class);
assertThat(field.getName()).as("annotated field name").isEqualTo("description");
});
}
private AnnotationConfigApplicationContext createContext(Class<?> testClass) {