From d2108d2db6f8b6e43e38d9ea0fabc9aa63177f6e Mon Sep 17 00:00:00 2001 From: Juergen Hoeller Date: Mon, 23 Oct 2023 17:32:35 +0200 Subject: [PATCH] Test for @Resource @Lazy fallback type match See gh-31447 --- ...ommonAnnotationBeanPostProcessorTests.java | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/spring-context/src/test/java/org/springframework/context/annotation/CommonAnnotationBeanPostProcessorTests.java b/spring-context/src/test/java/org/springframework/context/annotation/CommonAnnotationBeanPostProcessorTests.java index af0b72325f..daf59a936b 100644 --- a/spring-context/src/test/java/org/springframework/context/annotation/CommonAnnotationBeanPostProcessorTests.java +++ b/spring-context/src/test/java/org/springframework/context/annotation/CommonAnnotationBeanPostProcessorTests.java @@ -543,6 +543,25 @@ public class CommonAnnotationBeanPostProcessorTests { assertThat(tb.getName()).isEqualTo("notLazyAnymore"); } + @Test + public void testLazyResolutionWithFallbackTypeMatch() { + DefaultListableBeanFactory bf = new DefaultListableBeanFactory(); + bf.setAutowireCandidateResolver(new ContextAnnotationAutowireCandidateResolver()); + CommonAnnotationBeanPostProcessor bpp = new CommonAnnotationBeanPostProcessor(); + bpp.setBeanFactory(bf); + bf.addBeanPostProcessor(bpp); + + bf.registerBeanDefinition("annotatedBean", new RootBeanDefinition(LazyResourceCglibInjectionBean.class)); + bf.registerBeanDefinition("tb", new RootBeanDefinition(TestBean.class)); + + LazyResourceCglibInjectionBean bean = (LazyResourceCglibInjectionBean) bf.getBean("annotatedBean"); + assertThat(bf.containsSingleton("tb")).isFalse(); + bean.testBean.setName("notLazyAnymore"); + assertThat(bf.containsSingleton("tb")).isTrue(); + TestBean tb = (TestBean) bf.getBean("tb"); + assertThat(tb.getName()).isEqualTo("notLazyAnymore"); + } + public static class AnnotatedInitDestroyBean {