Register AutoConfigurations using fully qualified class name
Update `AbstractApplicationContextRunner` and `Configurations` to allow registration of beans with a specific generated bean name. By default, no name is generated, however, `AutoConfigurations` has been updated to use bean names using the fully qualified class name. The update brings `ApplicationContextRunners` closer the behavior of a standard Spring Boot application where user `@Configuration` classes are usually registered with a simple name and auto-configurations are imported (via an `ImportSelector`) using a fully qualified name. Fixes gh-17963 Co-authored-by: Stéphane Nicoll <stephane.nicoll@broadcom.com> Co-authored-by: Andy Wilkinson <andy.wilkinson@broadcom.com> Co-authored-by: Dmytro Nosan <dimanosan@gmail.com>
This commit is contained in:
@@ -51,7 +51,7 @@ public class AutoConfigurations extends Configurations implements Ordered {
|
||||
}
|
||||
|
||||
AutoConfigurations(UnaryOperator<String> replacementMapper, Collection<Class<?>> classes) {
|
||||
super(sorter(replacementMapper), classes);
|
||||
super(sorter(replacementMapper), classes, Class::getName);
|
||||
this.replacementMapper = replacementMapper;
|
||||
}
|
||||
|
||||
|
||||
@@ -54,6 +54,12 @@ class AutoConfigurationsTests {
|
||||
AutoConfigureA.class);
|
||||
}
|
||||
|
||||
@Test
|
||||
void getBeanNameShouldUseClassName() {
|
||||
Configurations configurations = AutoConfigurations.of(AutoConfigureA.class, AutoConfigureB.class);
|
||||
assertThat(configurations.getBeanName(AutoConfigureA.class)).isEqualTo(AutoConfigureA.class.getName());
|
||||
}
|
||||
|
||||
private String replaceB(String className) {
|
||||
return (!AutoConfigureB.class.getName().equals(className)) ? className : AutoConfigureB2.class.getName();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user