Skip to content

Commit f0f7f72

Browse files
committed
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
1 parent b38a5df commit f0f7f72

File tree

2 files changed

+19
-2
lines changed

2 files changed

+19
-2
lines changed

spring-beans/src/main/java/org/springframework/beans/factory/aot/BeanRegistrationCodeGenerator.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@
3737
*/
3838
class BeanRegistrationCodeGenerator implements BeanRegistrationCode {
3939

40-
private static final Predicate<String> NO_ATTRIBUTE_FILTER = attribute -> true;
40+
private static final Predicate<String> REJECT_ALL_ATTRIBUTES_FILTER = attribute -> false;
4141

4242
private final ClassName className;
4343

@@ -85,7 +85,7 @@ CodeBlock generateCode(GenerationContext generationContext) {
8585
this.registeredBean.getBeanType(), this));
8686
builder.add(this.codeFragments.generateSetBeanDefinitionPropertiesCode(
8787
generationContext, this, this.registeredBean.getMergedBeanDefinition(),
88-
NO_ATTRIBUTE_FILTER));
88+
REJECT_ALL_ATTRIBUTES_FILTER));
8989
CodeBlock instanceSupplierCode = this.codeFragments.generateInstanceSupplierCode(
9090
generationContext, this, this.constructorOrFactoryMethod,
9191
this.instancePostProcessors.isEmpty());

spring-beans/src/test/java/org/springframework/beans/factory/aot/BeanDefinitionMethodGeneratorTests.java

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -228,6 +228,23 @@ public CodeBlock generateNewBeanDefinitionCode(
228228
};
229229
}
230230

231+
@Test
232+
void generateBeanDefinitionMethodDoesNotGenerateAttributesByDefault() {
233+
RootBeanDefinition beanDefinition = new RootBeanDefinition(TestBean.class);
234+
beanDefinition.setAttribute("a", "A");
235+
beanDefinition.setAttribute("b", "B");
236+
RegisteredBean registeredBean = registerBean(beanDefinition);
237+
BeanDefinitionMethodGenerator generator = new BeanDefinitionMethodGenerator(
238+
this.methodGeneratorFactory, registeredBean, null,
239+
Collections.emptyList());
240+
MethodReference method = generator.generateBeanDefinitionMethod(
241+
this.generationContext, this.beanRegistrationsCode);
242+
compile(method, (actual, compiled) -> {
243+
assertThat(actual.hasAttribute("a")).isFalse();
244+
assertThat(actual.hasAttribute("b")).isFalse();
245+
});
246+
}
247+
231248
@Test
232249
void generateBeanDefinitionMethodWhenHasAttributeFilterGeneratesMethod() {
233250
RootBeanDefinition beanDefinition = new RootBeanDefinition(TestBean.class);

0 commit comments

Comments
 (0)