Do not write BeanDefinition attributes by default
This commit flips the default strategy for BeanDefinition attributes so that they are not generated in AOT-optimized contexts. Closes gh-28516
This commit is contained in:
parent
b38a5df563
commit
f0f7f72de9
|
|
@ -37,7 +37,7 @@ import org.springframework.util.Assert;
|
|||
*/
|
||||
class BeanRegistrationCodeGenerator implements BeanRegistrationCode {
|
||||
|
||||
private static final Predicate<String> NO_ATTRIBUTE_FILTER = attribute -> true;
|
||||
private static final Predicate<String> REJECT_ALL_ATTRIBUTES_FILTER = attribute -> false;
|
||||
|
||||
private final ClassName className;
|
||||
|
||||
|
|
@ -85,7 +85,7 @@ class BeanRegistrationCodeGenerator implements BeanRegistrationCode {
|
|||
this.registeredBean.getBeanType(), this));
|
||||
builder.add(this.codeFragments.generateSetBeanDefinitionPropertiesCode(
|
||||
generationContext, this, this.registeredBean.getMergedBeanDefinition(),
|
||||
NO_ATTRIBUTE_FILTER));
|
||||
REJECT_ALL_ATTRIBUTES_FILTER));
|
||||
CodeBlock instanceSupplierCode = this.codeFragments.generateInstanceSupplierCode(
|
||||
generationContext, this, this.constructorOrFactoryMethod,
|
||||
this.instancePostProcessors.isEmpty());
|
||||
|
|
|
|||
|
|
@ -228,6 +228,23 @@ class BeanDefinitionMethodGeneratorTests {
|
|||
};
|
||||
}
|
||||
|
||||
@Test
|
||||
void generateBeanDefinitionMethodDoesNotGenerateAttributesByDefault() {
|
||||
RootBeanDefinition beanDefinition = new RootBeanDefinition(TestBean.class);
|
||||
beanDefinition.setAttribute("a", "A");
|
||||
beanDefinition.setAttribute("b", "B");
|
||||
RegisteredBean registeredBean = registerBean(beanDefinition);
|
||||
BeanDefinitionMethodGenerator generator = new BeanDefinitionMethodGenerator(
|
||||
this.methodGeneratorFactory, registeredBean, null,
|
||||
Collections.emptyList());
|
||||
MethodReference method = generator.generateBeanDefinitionMethod(
|
||||
this.generationContext, this.beanRegistrationsCode);
|
||||
compile(method, (actual, compiled) -> {
|
||||
assertThat(actual.hasAttribute("a")).isFalse();
|
||||
assertThat(actual.hasAttribute("b")).isFalse();
|
||||
});
|
||||
}
|
||||
|
||||
@Test
|
||||
void generateBeanDefinitionMethodWhenHasAttributeFilterGeneratesMethod() {
|
||||
RootBeanDefinition beanDefinition = new RootBeanDefinition(TestBean.class);
|
||||
|
|
|
|||
Loading…
Reference in New Issue