diff --git a/spring-beans/src/main/java/org/springframework/beans/factory/aot/BeanDefinitionPropertiesCodeGenerator.java b/spring-beans/src/main/java/org/springframework/beans/factory/aot/BeanDefinitionPropertiesCodeGenerator.java index 4b1bc3a1aa9..ac25b4af6eb 100644 --- a/spring-beans/src/main/java/org/springframework/beans/factory/aot/BeanDefinitionPropertiesCodeGenerator.java +++ b/spring-beans/src/main/java/org/springframework/beans/factory/aot/BeanDefinitionPropertiesCodeGenerator.java @@ -151,7 +151,9 @@ class BeanDefinitionPropertiesCodeGenerator { addInitDestroyHint(beanType, methodName); } } - builder.addStatement(format, BEAN_DEFINITION_VARIABLE, arguments.build()); + if (!arguments.isEmpty()) { + builder.addStatement(format, BEAN_DEFINITION_VARIABLE, arguments.build()); + } } } diff --git a/spring-beans/src/test/java/org/springframework/beans/factory/aot/BeanDefinitionPropertiesCodeGeneratorTests.java b/spring-beans/src/test/java/org/springframework/beans/factory/aot/BeanDefinitionPropertiesCodeGeneratorTests.java index 6966bd362d4..e1ff8ecc3a3 100644 --- a/spring-beans/src/test/java/org/springframework/beans/factory/aot/BeanDefinitionPropertiesCodeGeneratorTests.java +++ b/spring-beans/src/test/java/org/springframework/beans/factory/aot/BeanDefinitionPropertiesCodeGeneratorTests.java @@ -37,6 +37,7 @@ import org.springframework.beans.factory.config.BeanReference; import org.springframework.beans.factory.config.ConstructorArgumentValues.ValueHolder; import org.springframework.beans.factory.config.RuntimeBeanNameReference; import org.springframework.beans.factory.config.RuntimeBeanReference; +import org.springframework.beans.factory.support.AbstractBeanDefinition; import org.springframework.beans.factory.support.DefaultListableBeanFactory; import org.springframework.beans.factory.support.ManagedList; import org.springframework.beans.factory.support.ManagedMap; @@ -229,6 +230,13 @@ class BeanDefinitionPropertiesCodeGeneratorTests { assertHasMethodInvokeHints(InitDestroyBean.class, methodNames); } + @Test + void setInitMethodWhenSingleInferredInitMethod() { + this.beanDefinition.setTargetType(InitDestroyBean.class); + this.beanDefinition.setInitMethodName(AbstractBeanDefinition.INFER_METHOD); + testCompiledResult((actual, compiled) -> assertThat(actual.getInitMethodNames()).isNull()); + } + @Test void setInitMethodWhenMultipleInitMethods() { this.beanDefinition.setTargetType(InitDestroyBean.class); @@ -250,6 +258,13 @@ class BeanDefinitionPropertiesCodeGeneratorTests { assertHasMethodInvokeHints(InitDestroyBean.class, methodNames); } + @Test + void setDestroyMethodWhenSingleInferredInitMethod() { + this.beanDefinition.setTargetType(InitDestroyBean.class); + this.beanDefinition.setDestroyMethodName(AbstractBeanDefinition.INFER_METHOD); + testCompiledResult((actual, compiled) -> assertThat(actual.getDestroyMethodNames()).isNull()); + } + @Test void setDestroyMethodWhenMultipleDestroyMethods() { this.beanDefinition.setTargetType(InitDestroyBean.class);