Skip to content

Commit c541bde

Browse files
committed
Simplify the generation of inner bean definitions
See gh-28047
1 parent 97986b3 commit c541bde

File tree

2 files changed

+7
-7
lines changed

2 files changed

+7
-7
lines changed

spring-beans/src/main/java/org/springframework/beans/factory/generator/BeanParameterGenerator.java

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@
2424
import java.util.List;
2525
import java.util.Map;
2626
import java.util.Set;
27-
import java.util.function.BiConsumer;
2827
import java.util.function.Function;
2928
import java.util.function.Supplier;
3029
import java.util.stream.Collectors;
@@ -52,23 +51,23 @@ public final class BeanParameterGenerator {
5251

5352
private final ResolvableTypeGenerator typeGenerator = new ResolvableTypeGenerator();
5453

55-
private final BiConsumer<BeanDefinition, Builder> innerBeanDefinitionGenerator;
54+
private final Function<BeanDefinition, CodeBlock> innerBeanDefinitionGenerator;
5655

5756

5857
/**
5958
* Create an instance with the callback to use to generate an inner bean
6059
* definition.
6160
* @param innerBeanDefinitionGenerator the inner bean definition generator
6261
*/
63-
public BeanParameterGenerator(BiConsumer<BeanDefinition, Builder> innerBeanDefinitionGenerator) {
62+
public BeanParameterGenerator(Function<BeanDefinition, CodeBlock> innerBeanDefinitionGenerator) {
6463
this.innerBeanDefinitionGenerator = innerBeanDefinitionGenerator;
6564
}
6665

6766
/**
6867
* Create an instance with no support for inner bean definitions.
6968
*/
7069
public BeanParameterGenerator() {
71-
this((beanDefinition, builder) -> {
70+
this(beanDefinition -> {
7271
throw new IllegalStateException("Inner bean definition is not supported by this instance");
7372
});
7473
}
@@ -174,8 +173,8 @@ else if (value instanceof Class) {
174173
else if (value instanceof ResolvableType) {
175174
code.add(this.typeGenerator.generateTypeFor((ResolvableType) value));
176175
}
177-
else if (value instanceof BeanDefinition) {
178-
this.innerBeanDefinitionGenerator.accept((BeanDefinition) value, code);
176+
else if (value instanceof BeanDefinition bd) {
177+
code.add(this.innerBeanDefinitionGenerator.apply(bd));
179178
}
180179
else if (value instanceof BeanReference) {
181180
code.add("new $T($S)", RuntimeBeanReference.class, ((BeanReference) value).getBeanName());

spring-beans/src/test/java/org/springframework/beans/factory/generator/BeanParameterGeneratorTests.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@
4040
import org.springframework.beans.factory.support.RootBeanDefinition;
4141
import org.springframework.core.ResolvableType;
4242
import org.springframework.core.io.ResourceLoader;
43+
import org.springframework.javapoet.CodeBlock;
4344
import org.springframework.javapoet.support.CodeSnippet;
4445
import org.springframework.lang.Nullable;
4546
import org.springframework.util.ReflectionUtils;
@@ -221,7 +222,7 @@ void generateBeanReference() {
221222
@Test
222223
void generateBeanDefinitionCallsConsumer() {
223224
BeanParameterGenerator customGenerator = new BeanParameterGenerator(
224-
((beanDefinition, builder) -> builder.add("test")));
225+
beanDefinition -> CodeBlock.of("test"));
225226
assertThat(CodeSnippet.process(customGenerator.generateParameterValue(
226227
new RootBeanDefinition()))).isEqualTo("test");
227228
}

0 commit comments

Comments
 (0)