|
|
|
@ -1,5 +1,5 @@ |
|
|
|
/* |
|
|
|
/* |
|
|
|
* Copyright 2002-2023 the original author or authors. |
|
|
|
* Copyright 2002-2024 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. |
|
|
|
@ -387,11 +387,11 @@ public class ConfigurationClassPostProcessor implements BeanDefinitionRegistryPo |
|
|
|
}); |
|
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
// Detect any custom bean name generation strategy supplied through the enclosing application context
|
|
|
|
// Detect any custom bean name generation strategy supplied through the enclosing application context
|
|
|
|
SingletonBeanRegistry sbr = null; |
|
|
|
SingletonBeanRegistry singletonRegistry = null; |
|
|
|
if (registry instanceof SingletonBeanRegistry _sbr) { |
|
|
|
if (registry instanceof SingletonBeanRegistry sbr) { |
|
|
|
sbr = _sbr; |
|
|
|
singletonRegistry = sbr; |
|
|
|
if (!this.localBeanNameGeneratorSet) { |
|
|
|
if (!this.localBeanNameGeneratorSet) { |
|
|
|
BeanNameGenerator generator = (BeanNameGenerator) sbr.getSingleton( |
|
|
|
BeanNameGenerator generator = (BeanNameGenerator) singletonRegistry.getSingleton( |
|
|
|
AnnotationConfigUtils.CONFIGURATION_BEAN_NAME_GENERATOR); |
|
|
|
AnnotationConfigUtils.CONFIGURATION_BEAN_NAME_GENERATOR); |
|
|
|
if (generator != null) { |
|
|
|
if (generator != null) { |
|
|
|
this.componentScanBeanNameGenerator = generator; |
|
|
|
this.componentScanBeanNameGenerator = generator; |
|
|
|
@ -452,8 +452,8 @@ public class ConfigurationClassPostProcessor implements BeanDefinitionRegistryPo |
|
|
|
while (!candidates.isEmpty()); |
|
|
|
while (!candidates.isEmpty()); |
|
|
|
|
|
|
|
|
|
|
|
// Register the ImportRegistry as a bean in order to support ImportAware @Configuration classes
|
|
|
|
// Register the ImportRegistry as a bean in order to support ImportAware @Configuration classes
|
|
|
|
if (sbr != null && !sbr.containsSingleton(IMPORT_REGISTRY_BEAN_NAME)) { |
|
|
|
if (singletonRegistry != null && !singletonRegistry.containsSingleton(IMPORT_REGISTRY_BEAN_NAME)) { |
|
|
|
sbr.registerSingleton(IMPORT_REGISTRY_BEAN_NAME, parser.getImportRegistry()); |
|
|
|
singletonRegistry.registerSingleton(IMPORT_REGISTRY_BEAN_NAME, parser.getImportRegistry()); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// Store the PropertySourceDescriptors to contribute them Ahead-of-time if necessary
|
|
|
|
// Store the PropertySourceDescriptors to contribute them Ahead-of-time if necessary
|
|
|
|
@ -552,6 +552,7 @@ public class ConfigurationClassPostProcessor implements BeanDefinitionRegistryPo |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
@Override |
|
|
|
|
|
|
|
@Nullable |
|
|
|
public PropertyValues postProcessProperties(@Nullable PropertyValues pvs, Object bean, String beanName) { |
|
|
|
public PropertyValues postProcessProperties(@Nullable PropertyValues pvs, Object bean, String beanName) { |
|
|
|
// Inject the BeanFactory before AutowiredAnnotationBeanPostProcessor's
|
|
|
|
// Inject the BeanFactory before AutowiredAnnotationBeanPostProcessor's
|
|
|
|
// postProcessProperties method attempts to autowire other configuration beans.
|
|
|
|
// postProcessProperties method attempts to autowire other configuration beans.
|
|
|
|
@ -647,9 +648,9 @@ public class ConfigurationClassPostProcessor implements BeanDefinitionRegistryPo |
|
|
|
} |
|
|
|
} |
|
|
|
return mappings; |
|
|
|
return mappings; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private static class PropertySourcesAotContribution implements BeanFactoryInitializationAotContribution { |
|
|
|
private static class PropertySourcesAotContribution implements BeanFactoryInitializationAotContribution { |
|
|
|
|
|
|
|
|
|
|
|
private static final String ENVIRONMENT_VARIABLE = "environment"; |
|
|
|
private static final String ENVIRONMENT_VARIABLE = "environment"; |
|
|
|
@ -761,17 +762,18 @@ public class ConfigurationClassPostProcessor implements BeanDefinitionRegistryPo |
|
|
|
return nonNull.get(); |
|
|
|
return nonNull.get(); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private static class ConfigurationClassProxyBeanRegistrationCodeFragments extends BeanRegistrationCodeFragmentsDecorator { |
|
|
|
private static class ConfigurationClassProxyBeanRegistrationCodeFragments extends BeanRegistrationCodeFragmentsDecorator { |
|
|
|
|
|
|
|
|
|
|
|
private final RegisteredBean registeredBean; |
|
|
|
private final RegisteredBean registeredBean; |
|
|
|
|
|
|
|
|
|
|
|
private final Class<?> proxyClass; |
|
|
|
private final Class<?> proxyClass; |
|
|
|
|
|
|
|
|
|
|
|
public ConfigurationClassProxyBeanRegistrationCodeFragments(BeanRegistrationCodeFragments codeFragments, |
|
|
|
public ConfigurationClassProxyBeanRegistrationCodeFragments( |
|
|
|
RegisteredBean registeredBean) { |
|
|
|
BeanRegistrationCodeFragments codeFragments, RegisteredBean registeredBean) { |
|
|
|
|
|
|
|
|
|
|
|
super(codeFragments); |
|
|
|
super(codeFragments); |
|
|
|
this.registeredBean = registeredBean; |
|
|
|
this.registeredBean = registeredBean; |
|
|
|
this.proxyClass = registeredBean.getBeanType().toClass(); |
|
|
|
this.proxyClass = registeredBean.getBeanType().toClass(); |
|
|
|
@ -780,6 +782,7 @@ public class ConfigurationClassPostProcessor implements BeanDefinitionRegistryPo |
|
|
|
@Override |
|
|
|
@Override |
|
|
|
public CodeBlock generateSetBeanDefinitionPropertiesCode(GenerationContext generationContext, |
|
|
|
public CodeBlock generateSetBeanDefinitionPropertiesCode(GenerationContext generationContext, |
|
|
|
BeanRegistrationCode beanRegistrationCode, RootBeanDefinition beanDefinition, Predicate<String> attributeFilter) { |
|
|
|
BeanRegistrationCode beanRegistrationCode, RootBeanDefinition beanDefinition, Predicate<String> attributeFilter) { |
|
|
|
|
|
|
|
|
|
|
|
CodeBlock.Builder code = CodeBlock.builder(); |
|
|
|
CodeBlock.Builder code = CodeBlock.builder(); |
|
|
|
code.add(super.generateSetBeanDefinitionPropertiesCode(generationContext, |
|
|
|
code.add(super.generateSetBeanDefinitionPropertiesCode(generationContext, |
|
|
|
beanRegistrationCode, beanDefinition, attributeFilter)); |
|
|
|
beanRegistrationCode, beanDefinition, attributeFilter)); |
|
|
|
@ -790,8 +793,7 @@ public class ConfigurationClassPostProcessor implements BeanDefinitionRegistryPo |
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
@Override |
|
|
|
public CodeBlock generateInstanceSupplierCode(GenerationContext generationContext, |
|
|
|
public CodeBlock generateInstanceSupplierCode(GenerationContext generationContext, |
|
|
|
BeanRegistrationCode beanRegistrationCode, |
|
|
|
BeanRegistrationCode beanRegistrationCode, boolean allowDirectSupplierShortcut) { |
|
|
|
boolean allowDirectSupplierShortcut) { |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Executable executableToUse = proxyExecutable(generationContext.getRuntimeHints(), |
|
|
|
Executable executableToUse = proxyExecutable(generationContext.getRuntimeHints(), |
|
|
|
this.registeredBean.resolveConstructorOrFactoryMethod()); |
|
|
|
this.registeredBean.resolveConstructorOrFactoryMethod()); |
|
|
|
@ -812,7 +814,6 @@ public class ConfigurationClassPostProcessor implements BeanDefinitionRegistryPo |
|
|
|
} |
|
|
|
} |
|
|
|
return userExecutable; |
|
|
|
return userExecutable; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|