Browse Source

Restore original factory method caching (addressing Boot regressions)

Issue: SPR-17358
pull/1988/head
Juergen Hoeller 7 years ago
parent
commit
c89e3e6e0d
  1. 5
      spring-beans/src/main/java/org/springframework/beans/factory/support/AbstractAutowireCapableBeanFactory.java
  2. 37
      spring-context/src/test/java/org/springframework/context/annotation/configuration/BeanMethodQualificationTests.java

5
spring-beans/src/main/java/org/springframework/beans/factory/support/AbstractAutowireCapableBeanFactory.java

@ -775,11 +775,6 @@ public abstract class AbstractAutowireCapableBeanFactory extends AbstractBeanFac @@ -775,11 +775,6 @@ public abstract class AbstractAutowireCapableBeanFactory extends AbstractBeanFac
}
}
if (uniqueCandidate != null) {
synchronized (mbd.constructorArgumentLock) {
mbd.resolvedConstructorOrFactoryMethod = uniqueCandidate;
}
}
if (commonType == null) {
return null;
}

37
spring-context/src/test/java/org/springframework/context/annotation/configuration/BeanMethodQualificationTests.java

@ -83,10 +83,13 @@ public class BeanMethodQualificationTests { @@ -83,10 +83,13 @@ public class BeanMethodQualificationTests {
new AnnotationConfigApplicationContext(CustomConfig.class, CustomPojo.class);
assertFalse(ctx.getBeanFactory().containsSingleton("testBean1"));
assertFalse(ctx.getBeanFactory().containsSingleton("testBean2"));
assertTrue(BeanFactoryAnnotationUtils.isQualifierMatch(value -> value.equals("boring"),
"testBean2", ctx.getDefaultListableBeanFactory()));
// TODO: assertTrue(BeanFactoryAnnotationUtils.isQualifierMatch(value -> value.equals("boring"),
// "testBean2", ctx.getDefaultListableBeanFactory()));
CustomPojo pojo = ctx.getBean(CustomPojo.class);
assertThat(pojo.testBean.getName(), equalTo("interesting"));
TestBean testBean2 = BeanFactoryAnnotationUtils.qualifiedBeanOfType(
ctx.getDefaultListableBeanFactory(), TestBean.class, "boring");
assertThat(testBean2.getName(), equalTo("boring"));
}
@Test
@ -136,8 +139,10 @@ public class BeanMethodQualificationTests { @@ -136,8 +139,10 @@ public class BeanMethodQualificationTests {
}
@Bean @Boring
public TestBean testBean2() {
return new TestBean("boring");
public TestBean testBean2(@Lazy TestBean testBean1) {
TestBean tb = new TestBean("boring");
tb.setSpouse(testBean1);
return tb;
}
}
@ -150,8 +155,10 @@ public class BeanMethodQualificationTests { @@ -150,8 +155,10 @@ public class BeanMethodQualificationTests {
}
@Bean @Boring @Scope("prototype")
public TestBean testBean2() {
return new TestBean("boring");
public TestBean testBean2(TestBean testBean1) {
TestBean tb = new TestBean("boring");
tb.setSpouse(testBean1);
return tb;
}
}
@ -164,8 +171,10 @@ public class BeanMethodQualificationTests { @@ -164,8 +171,10 @@ public class BeanMethodQualificationTests {
}
@Bean @Boring @Scope(value="prototype", proxyMode=ScopedProxyMode.TARGET_CLASS)
public TestBean testBean2() {
return new TestBean("boring");
public TestBean testBean2(TestBean testBean1) {
TestBean tb = new TestBean("boring");
tb.setSpouse(testBean1);
return tb;
}
}
@ -191,8 +200,10 @@ public class BeanMethodQualificationTests { @@ -191,8 +200,10 @@ public class BeanMethodQualificationTests {
}
@Bean @Qualifier("boring") @Lazy
public TestBean testBean2() {
return new TestBean("boring");
public TestBean testBean2(@Lazy TestBean testBean1) {
TestBean tb = new TestBean("boring");
tb.setSpouse(testBean1);
return tb;
}
}
@ -205,8 +216,10 @@ public class BeanMethodQualificationTests { @@ -205,8 +216,10 @@ public class BeanMethodQualificationTests {
}
@Bean @Qualifier("boring")
public TestBean testBean2() {
return new TestBean("boring");
public TestBean testBean2(@Lazy TestBean testBean1) {
TestBean tb = new TestBean("boring");
tb.setSpouse(testBean1);
return tb;
}
}

Loading…
Cancel
Save