Skip to content

Commit 03c5ea2

Browse files
committed
Merge branch '6.2.x'
2 parents ce050f1 + ecdf069 commit 03c5ea2

File tree

3 files changed

+50
-1
lines changed

3 files changed

+50
-1
lines changed

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

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
import org.springframework.aot.generate.ValueCodeGeneratorDelegates;
3333
import org.springframework.aot.generate.ValueCodeGeneratorDelegates.CollectionDelegate;
3434
import org.springframework.aot.generate.ValueCodeGeneratorDelegates.MapDelegate;
35+
import org.springframework.beans.factory.config.AutowiredPropertyMarker;
3536
import org.springframework.beans.factory.config.BeanReference;
3637
import org.springframework.beans.factory.config.RuntimeBeanReference;
3738
import org.springframework.beans.factory.config.TypedStringValue;
@@ -59,6 +60,7 @@ public abstract class BeanDefinitionPropertyValueCodeGeneratorDelegates {
5960
* <li>{@link LinkedHashMap}</li>
6061
* <li>{@link BeanReference}</li>
6162
* <li>{@link TypedStringValue}</li>
63+
* <li>{@link AutowiredPropertyMarker}</li>
6264
* </ul>
6365
* When combined with {@linkplain ValueCodeGeneratorDelegates#INSTANCES the
6466
* delegates for common value types}, this should be added first as they have
@@ -70,7 +72,8 @@ public abstract class BeanDefinitionPropertyValueCodeGeneratorDelegates {
7072
new ManagedMapDelegate(),
7173
new LinkedHashMapDelegate(),
7274
new BeanReferenceDelegate(),
73-
new TypedStringValueDelegate()
75+
new TypedStringValueDelegate(),
76+
new AutowiredPropertyMarkerDelegate()
7477
);
7578

7679

@@ -234,4 +237,19 @@ private CodeBlock generateTypeStringValueCode(ValueCodeGenerator valueCodeGenera
234237
return valueCodeGenerator.generateCode(value);
235238
}
236239
}
240+
241+
/**
242+
* {@link Delegate} for {@link AutowiredPropertyMarker} types.
243+
*/
244+
private static class AutowiredPropertyMarkerDelegate implements Delegate {
245+
246+
@Override
247+
public @Nullable CodeBlock generateCode(ValueCodeGenerator valueCodeGenerator, Object value) {
248+
if (value instanceof AutowiredPropertyMarker) {
249+
return CodeBlock.of("$T.INSTANCE", AutowiredPropertyMarker.class);
250+
}
251+
return null;
252+
}
253+
}
254+
237255
}

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

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616

1717
package org.springframework.beans.factory.aot;
1818

19+
1920
import java.util.ArrayList;
2021
import java.util.Collections;
2122
import java.util.List;
@@ -34,6 +35,7 @@
3435
import org.springframework.aot.generate.MethodReference;
3536
import org.springframework.aot.generate.MethodReference.ArgumentCodeGenerator;
3637
import org.springframework.aot.test.generate.TestGenerationContext;
38+
import org.springframework.beans.factory.config.AutowiredPropertyMarker;
3739
import org.springframework.beans.factory.config.BeanDefinition;
3840
import org.springframework.beans.factory.config.ConstructorArgumentValues.ValueHolder;
3941
import org.springframework.beans.factory.support.BeanDefinitionBuilder;
@@ -626,6 +628,22 @@ void generateBeanDefinitionMethodWhenCustomPropertyValueUsesCustomDelegate() {
626628
-> assertThat(customPropertyValue.value()).isEqualTo("test")));
627629
}
628630

631+
@Test
632+
void generateBeanDefinitionMethodWhenHasAutowiredPropertyGeneratesMethod() {
633+
RootBeanDefinition beanDefinition = (RootBeanDefinition) BeanDefinitionBuilder
634+
.rootBeanDefinition(CustomBean.class).addAutowiredProperty("innerBean")
635+
.getBeanDefinition();
636+
RegisteredBean registeredBean = registerBean(beanDefinition);
637+
BeanDefinitionMethodGenerator generator = new BeanDefinitionMethodGenerator(
638+
this.methodGeneratorFactory, registeredBean, null,
639+
Collections.emptyList());
640+
MethodReference method = generator.generateBeanDefinitionMethod(
641+
this.generationContext, this.beanRegistrationsCode);
642+
compile(method, (actual, compiled) ->
643+
assertThat(actual.getPropertyValues().get("innerBean"))
644+
.isSameAs(AutowiredPropertyMarker.INSTANCE));
645+
}
646+
629647
@Test
630648
void generateBeanDefinitionMethodWhenHasAotContributionsAppliesContributions() {
631649
RegisteredBean registeredBean = registerBean(

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

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@
4040
import org.springframework.aot.generate.ValueCodeGenerator;
4141
import org.springframework.aot.generate.ValueCodeGeneratorDelegates;
4242
import org.springframework.aot.test.generate.TestGenerationContext;
43+
import org.springframework.beans.factory.config.AutowiredPropertyMarker;
4344
import org.springframework.beans.factory.config.BeanReference;
4445
import org.springframework.beans.factory.config.RuntimeBeanNameReference;
4546
import org.springframework.beans.factory.config.RuntimeBeanReference;
@@ -486,4 +487,16 @@ void generatedWhenBeanReferenceByType() {
486487

487488
}
488489

490+
@Nested
491+
class AutowiredPropertyMarkerTests {
492+
493+
@Test
494+
void generateWhenAutowiredPropertyMarker() {
495+
compile(AutowiredPropertyMarker.INSTANCE, (instance, compiler) ->
496+
assertThat(instance).isInstanceOf(AutowiredPropertyMarker.class)
497+
.isSameAs(AutowiredPropertyMarker.INSTANCE));
498+
}
499+
500+
}
501+
489502
}

0 commit comments

Comments
 (0)