parent
ae00228188
commit
e0465f7357
|
@ -449,7 +449,7 @@ class ConditionalOnMissingBeanTests {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void registerBeanDefinitions(AnnotationMetadata meta, BeanDefinitionRegistry registry) {
|
public void registerBeanDefinitions(AnnotationMetadata meta, BeanDefinitionRegistry registry) {
|
||||||
BeanDefinitionBuilder builder = BeanDefinitionBuilder.genericBeanDefinition(NonspecificFactoryBean.class);
|
BeanDefinitionBuilder builder = BeanDefinitionBuilder.rootBeanDefinition(NonspecificFactoryBean.class);
|
||||||
builder.addConstructorArgValue("foo");
|
builder.addConstructorArgValue("foo");
|
||||||
builder.getBeanDefinition().setAttribute(FactoryBean.OBJECT_TYPE_ATTRIBUTE, ExampleBean.class);
|
builder.getBeanDefinition().setAttribute(FactoryBean.OBJECT_TYPE_ATTRIBUTE, ExampleBean.class);
|
||||||
registry.registerBeanDefinition("exampleBeanFactoryBean", builder.getBeanDefinition());
|
registry.registerBeanDefinition("exampleBeanFactoryBean", builder.getBeanDefinition());
|
||||||
|
@ -467,7 +467,7 @@ class ConditionalOnMissingBeanTests {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void registerBeanDefinitions(AnnotationMetadata meta, BeanDefinitionRegistry registry) {
|
public void registerBeanDefinitions(AnnotationMetadata meta, BeanDefinitionRegistry registry) {
|
||||||
BeanDefinitionBuilder builder = BeanDefinitionBuilder.genericBeanDefinition(NonspecificFactoryBean.class);
|
BeanDefinitionBuilder builder = BeanDefinitionBuilder.rootBeanDefinition(NonspecificFactoryBean.class);
|
||||||
builder.addConstructorArgValue("foo");
|
builder.addConstructorArgValue("foo");
|
||||||
builder.getBeanDefinition().setAttribute(FactoryBean.OBJECT_TYPE_ATTRIBUTE, ExampleBean.class.getName());
|
builder.getBeanDefinition().setAttribute(FactoryBean.OBJECT_TYPE_ATTRIBUTE, ExampleBean.class.getName());
|
||||||
registry.registerBeanDefinition("exampleBeanFactoryBean", builder.getBeanDefinition());
|
registry.registerBeanDefinition("exampleBeanFactoryBean", builder.getBeanDefinition());
|
||||||
|
@ -485,7 +485,7 @@ class ConditionalOnMissingBeanTests {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void registerBeanDefinitions(AnnotationMetadata meta, BeanDefinitionRegistry registry) {
|
public void registerBeanDefinitions(AnnotationMetadata meta, BeanDefinitionRegistry registry) {
|
||||||
BeanDefinitionBuilder builder = BeanDefinitionBuilder.genericBeanDefinition(ExampleFactoryBean.class);
|
BeanDefinitionBuilder builder = BeanDefinitionBuilder.rootBeanDefinition(ExampleFactoryBean.class);
|
||||||
builder.addConstructorArgValue("foo");
|
builder.addConstructorArgValue("foo");
|
||||||
registry.registerBeanDefinition("exampleBeanFactoryBean", builder.getBeanDefinition());
|
registry.registerBeanDefinition("exampleBeanFactoryBean", builder.getBeanDefinition());
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright 2012-2020 the original author or authors.
|
* Copyright 2012-2021 the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
@ -86,8 +86,8 @@ class PropertyPlaceholderAutoConfigurationTests {
|
||||||
|
|
||||||
private void definePlaceholderBean(ConfigurableApplicationContext context) {
|
private void definePlaceholderBean(ConfigurableApplicationContext context) {
|
||||||
((BeanDefinitionRegistry) context.getBeanFactory()).registerBeanDefinition("placeholderBean",
|
((BeanDefinitionRegistry) context.getBeanFactory()).registerBeanDefinition("placeholderBean",
|
||||||
BeanDefinitionBuilder.genericBeanDefinition(PlaceholderBean.class)
|
BeanDefinitionBuilder.rootBeanDefinition(PlaceholderBean.class).addConstructorArgValue("${fruit:apple}")
|
||||||
.addConstructorArgValue("${fruit:apple}").getBeanDefinition());
|
.getBeanDefinition());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Configuration(proxyBeanMethods = false)
|
@Configuration(proxyBeanMethods = false)
|
||||||
|
|
|
@ -26,7 +26,6 @@ import org.springframework.beans.PropertyEditorRegistry;
|
||||||
import org.springframework.beans.factory.BeanFactory;
|
import org.springframework.beans.factory.BeanFactory;
|
||||||
import org.springframework.beans.factory.FactoryBean;
|
import org.springframework.beans.factory.FactoryBean;
|
||||||
import org.springframework.beans.factory.config.BeanDefinition;
|
import org.springframework.beans.factory.config.BeanDefinition;
|
||||||
import org.springframework.beans.factory.support.AbstractBeanDefinition;
|
|
||||||
import org.springframework.beans.factory.support.BeanDefinitionBuilder;
|
import org.springframework.beans.factory.support.BeanDefinitionBuilder;
|
||||||
import org.springframework.beans.factory.support.BeanDefinitionRegistry;
|
import org.springframework.beans.factory.support.BeanDefinitionRegistry;
|
||||||
import org.springframework.boot.context.properties.bind.AbstractBindHandler;
|
import org.springframework.boot.context.properties.bind.AbstractBindHandler;
|
||||||
|
@ -113,7 +112,7 @@ class ConfigurationPropertiesBinder {
|
||||||
private <T> BindHandler getBindHandler(Bindable<T> target, ConfigurationProperties annotation) {
|
private <T> BindHandler getBindHandler(Bindable<T> target, ConfigurationProperties annotation) {
|
||||||
List<Validator> validators = getValidators(target);
|
List<Validator> validators = getValidators(target);
|
||||||
BindHandler handler = getHandler();
|
BindHandler handler = getHandler();
|
||||||
handler = new ConfigurationPropertiesBindHander(handler);
|
handler = new ConfigurationPropertiesBindHandler(handler);
|
||||||
if (annotation.ignoreInvalidFields()) {
|
if (annotation.ignoreInvalidFields()) {
|
||||||
handler = new IgnoreErrorsBindHandler(handler);
|
handler = new IgnoreErrorsBindHandler(handler);
|
||||||
}
|
}
|
||||||
|
@ -193,16 +192,14 @@ class ConfigurationPropertiesBinder {
|
||||||
|
|
||||||
static void register(BeanDefinitionRegistry registry) {
|
static void register(BeanDefinitionRegistry registry) {
|
||||||
if (!registry.containsBeanDefinition(FACTORY_BEAN_NAME)) {
|
if (!registry.containsBeanDefinition(FACTORY_BEAN_NAME)) {
|
||||||
AbstractBeanDefinition definition = BeanDefinitionBuilder
|
BeanDefinition definition = BeanDefinitionBuilder
|
||||||
.genericBeanDefinition(ConfigurationPropertiesBinder.Factory.class,
|
.rootBeanDefinition(ConfigurationPropertiesBinder.Factory.class).getBeanDefinition();
|
||||||
ConfigurationPropertiesBinder.Factory::new)
|
|
||||||
.getBeanDefinition();
|
|
||||||
definition.setRole(BeanDefinition.ROLE_INFRASTRUCTURE);
|
definition.setRole(BeanDefinition.ROLE_INFRASTRUCTURE);
|
||||||
registry.registerBeanDefinition(ConfigurationPropertiesBinder.FACTORY_BEAN_NAME, definition);
|
registry.registerBeanDefinition(ConfigurationPropertiesBinder.FACTORY_BEAN_NAME, definition);
|
||||||
}
|
}
|
||||||
if (!registry.containsBeanDefinition(BEAN_NAME)) {
|
if (!registry.containsBeanDefinition(BEAN_NAME)) {
|
||||||
AbstractBeanDefinition definition = BeanDefinitionBuilder
|
BeanDefinition definition = BeanDefinitionBuilder
|
||||||
.genericBeanDefinition(ConfigurationPropertiesBinder.class,
|
.rootBeanDefinition(ConfigurationPropertiesBinder.class,
|
||||||
() -> ((BeanFactory) registry)
|
() -> ((BeanFactory) registry)
|
||||||
.getBean(FACTORY_BEAN_NAME, ConfigurationPropertiesBinder.Factory.class).create())
|
.getBean(FACTORY_BEAN_NAME, ConfigurationPropertiesBinder.Factory.class).create())
|
||||||
.getBeanDefinition();
|
.getBeanDefinition();
|
||||||
|
@ -240,9 +237,9 @@ class ConfigurationPropertiesBinder {
|
||||||
* {@link BindHandler} to deal with
|
* {@link BindHandler} to deal with
|
||||||
* {@link ConfigurationProperties @ConfigurationProperties} concerns.
|
* {@link ConfigurationProperties @ConfigurationProperties} concerns.
|
||||||
*/
|
*/
|
||||||
private static class ConfigurationPropertiesBindHander extends AbstractBindHandler {
|
private static class ConfigurationPropertiesBindHandler extends AbstractBindHandler {
|
||||||
|
|
||||||
ConfigurationPropertiesBindHander(BindHandler handler) {
|
ConfigurationPropertiesBindHandler(BindHandler handler) {
|
||||||
super(handler);
|
super(handler);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -108,9 +108,7 @@ public class ConfigurationPropertiesBindingPostProcessor
|
||||||
Assert.notNull(registry, "Registry must not be null");
|
Assert.notNull(registry, "Registry must not be null");
|
||||||
if (!registry.containsBeanDefinition(BEAN_NAME)) {
|
if (!registry.containsBeanDefinition(BEAN_NAME)) {
|
||||||
BeanDefinition definition = BeanDefinitionBuilder
|
BeanDefinition definition = BeanDefinitionBuilder
|
||||||
.rootBeanDefinition(ConfigurationPropertiesBindingPostProcessor.class,
|
.rootBeanDefinition(ConfigurationPropertiesBindingPostProcessor.class).getBeanDefinition();
|
||||||
ConfigurationPropertiesBindingPostProcessor::new)
|
|
||||||
.getBeanDefinition();
|
|
||||||
definition.setRole(BeanDefinition.ROLE_INFRASTRUCTURE);
|
definition.setRole(BeanDefinition.ROLE_INFRASTRUCTURE);
|
||||||
registry.registerBeanDefinition(BEAN_NAME, definition);
|
registry.registerBeanDefinition(BEAN_NAME, definition);
|
||||||
}
|
}
|
||||||
|
|
|
@ -73,7 +73,7 @@ public class DatabaseInitializationDependencyConfigurer implements ImportBeanDef
|
||||||
public void registerBeanDefinitions(AnnotationMetadata importingClassMetadata, BeanDefinitionRegistry registry) {
|
public void registerBeanDefinitions(AnnotationMetadata importingClassMetadata, BeanDefinitionRegistry registry) {
|
||||||
String name = DependsOnDatabaseInitializationPostProcessor.class.getName();
|
String name = DependsOnDatabaseInitializationPostProcessor.class.getName();
|
||||||
if (!registry.containsBeanDefinition(name)) {
|
if (!registry.containsBeanDefinition(name)) {
|
||||||
BeanDefinitionBuilder builder = BeanDefinitionBuilder.genericBeanDefinition(
|
BeanDefinitionBuilder builder = BeanDefinitionBuilder.rootBeanDefinition(
|
||||||
DependsOnDatabaseInitializationPostProcessor.class,
|
DependsOnDatabaseInitializationPostProcessor.class,
|
||||||
this::createDependsOnDatabaseInitializationPostProcessor);
|
this::createDependsOnDatabaseInitializationPostProcessor);
|
||||||
registry.registerBeanDefinition(name, builder.getBeanDefinition());
|
registry.registerBeanDefinition(name, builder.getBeanDefinition());
|
||||||
|
|
|
@ -81,10 +81,8 @@ class DatabaseInitializationDependencyConfigurerTests {
|
||||||
void beanFactoryPostProcessorHasOrderAllowingSubsequentPostProcessorsToFineTuneDependencies() {
|
void beanFactoryPostProcessorHasOrderAllowingSubsequentPostProcessorsToFineTuneDependencies() {
|
||||||
performDetection(Arrays.asList(MockDatabaseInitializerDetector.class,
|
performDetection(Arrays.asList(MockDatabaseInitializerDetector.class,
|
||||||
MockedDependsOnDatabaseInitializationDetector.class), (context) -> {
|
MockedDependsOnDatabaseInitializationDetector.class), (context) -> {
|
||||||
BeanDefinition alpha = BeanDefinitionBuilder.genericBeanDefinition(String.class)
|
BeanDefinition alpha = BeanDefinitionBuilder.rootBeanDefinition(String.class).getBeanDefinition();
|
||||||
.getBeanDefinition();
|
BeanDefinition bravo = BeanDefinitionBuilder.rootBeanDefinition(String.class).getBeanDefinition();
|
||||||
BeanDefinition bravo = BeanDefinitionBuilder.genericBeanDefinition(String.class)
|
|
||||||
.getBeanDefinition();
|
|
||||||
context.register(DependsOnCaptor.class);
|
context.register(DependsOnCaptor.class);
|
||||||
context.register(DependencyConfigurerConfiguration.class);
|
context.register(DependencyConfigurerConfiguration.class);
|
||||||
context.registerBeanDefinition("alpha", alpha);
|
context.registerBeanDefinition("alpha", alpha);
|
||||||
|
@ -104,8 +102,7 @@ class DatabaseInitializationDependencyConfigurerTests {
|
||||||
void whenDetectorsAreCreatedThenTheEnvironmentCanBeInjected() {
|
void whenDetectorsAreCreatedThenTheEnvironmentCanBeInjected() {
|
||||||
performDetection(Arrays.asList(ConstructorInjectionDatabaseInitializerDetector.class,
|
performDetection(Arrays.asList(ConstructorInjectionDatabaseInitializerDetector.class,
|
||||||
ConstructorInjectionDependsOnDatabaseInitializationDetector.class), (context) -> {
|
ConstructorInjectionDependsOnDatabaseInitializationDetector.class), (context) -> {
|
||||||
BeanDefinition alpha = BeanDefinitionBuilder.genericBeanDefinition(String.class)
|
BeanDefinition alpha = BeanDefinitionBuilder.rootBeanDefinition(String.class).getBeanDefinition();
|
||||||
.getBeanDefinition();
|
|
||||||
context.registerBeanDefinition("alpha", alpha);
|
context.registerBeanDefinition("alpha", alpha);
|
||||||
context.register(DependencyConfigurerConfiguration.class);
|
context.register(DependencyConfigurerConfiguration.class);
|
||||||
context.refresh();
|
context.refresh();
|
||||||
|
@ -117,8 +114,8 @@ class DatabaseInitializationDependencyConfigurerTests {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void whenDependenciesAreConfiguredThenBeansThatDependUponDatabaseInitializationDependUponDetectedDatabaseInitializers() {
|
void whenDependenciesAreConfiguredThenBeansThatDependUponDatabaseInitializationDependUponDetectedDatabaseInitializers() {
|
||||||
BeanDefinition alpha = BeanDefinitionBuilder.genericBeanDefinition(String.class).getBeanDefinition();
|
BeanDefinition alpha = BeanDefinitionBuilder.rootBeanDefinition(String.class).getBeanDefinition();
|
||||||
BeanDefinition bravo = BeanDefinitionBuilder.genericBeanDefinition(String.class).getBeanDefinition();
|
BeanDefinition bravo = BeanDefinitionBuilder.rootBeanDefinition(String.class).getBeanDefinition();
|
||||||
performDetection(Arrays.asList(MockDatabaseInitializerDetector.class,
|
performDetection(Arrays.asList(MockDatabaseInitializerDetector.class,
|
||||||
MockedDependsOnDatabaseInitializationDetector.class), (context) -> {
|
MockedDependsOnDatabaseInitializationDetector.class), (context) -> {
|
||||||
context.registerBeanDefinition("alpha", alpha);
|
context.registerBeanDefinition("alpha", alpha);
|
||||||
|
@ -140,11 +137,11 @@ class DatabaseInitializationDependencyConfigurerTests {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void whenDependenciesAreConfiguredDetectedDatabaseInitializersAreInitializedInCorrectOrder() {
|
void whenDependenciesAreConfiguredDetectedDatabaseInitializersAreInitializedInCorrectOrder() {
|
||||||
BeanDefinition alpha = BeanDefinitionBuilder.genericBeanDefinition(String.class).getBeanDefinition();
|
BeanDefinition alpha = BeanDefinitionBuilder.rootBeanDefinition(String.class).getBeanDefinition();
|
||||||
BeanDefinition bravo1 = BeanDefinitionBuilder.genericBeanDefinition(String.class).getBeanDefinition();
|
BeanDefinition bravo1 = BeanDefinitionBuilder.rootBeanDefinition(String.class).getBeanDefinition();
|
||||||
BeanDefinition bravo2 = BeanDefinitionBuilder.genericBeanDefinition(String.class).getBeanDefinition();
|
BeanDefinition bravo2 = BeanDefinitionBuilder.rootBeanDefinition(String.class).getBeanDefinition();
|
||||||
BeanDefinition charlie = BeanDefinitionBuilder.genericBeanDefinition(String.class).getBeanDefinition();
|
BeanDefinition charlie = BeanDefinitionBuilder.rootBeanDefinition(String.class).getBeanDefinition();
|
||||||
BeanDefinition delta = BeanDefinitionBuilder.genericBeanDefinition(String.class).getBeanDefinition();
|
BeanDefinition delta = BeanDefinitionBuilder.rootBeanDefinition(String.class).getBeanDefinition();
|
||||||
performDetection(
|
performDetection(
|
||||||
Arrays.asList(MockDatabaseInitializerDetector.class, OrderedLowestMockDatabaseInitializerDetector.class,
|
Arrays.asList(MockDatabaseInitializerDetector.class, OrderedLowestMockDatabaseInitializerDetector.class,
|
||||||
OrderedNearLowestMockDatabaseInitializerDetector.class,
|
OrderedNearLowestMockDatabaseInitializerDetector.class,
|
||||||
|
|
Loading…
Reference in New Issue