|
|
|
|
@ -1,5 +1,5 @@
@@ -1,5 +1,5 @@
|
|
|
|
|
/* |
|
|
|
|
* Copyright 2002-2022 the original author or authors. |
|
|
|
|
* Copyright 2002-2024 the original author or authors. |
|
|
|
|
* |
|
|
|
|
* Licensed under the Apache License, Version 2.0 (the "License"); |
|
|
|
|
* you may not use this file except in compliance with the License. |
|
|
|
|
@ -27,6 +27,7 @@ import javax.inject.Provider;
@@ -27,6 +27,7 @@ import javax.inject.Provider;
|
|
|
|
|
import org.junit.jupiter.api.Test; |
|
|
|
|
|
|
|
|
|
import org.springframework.beans.factory.BeanFactory; |
|
|
|
|
import org.springframework.beans.factory.InitializingBean; |
|
|
|
|
import org.springframework.beans.factory.ObjectFactory; |
|
|
|
|
import org.springframework.beans.factory.annotation.Autowired; |
|
|
|
|
import org.springframework.beans.factory.annotation.Value; |
|
|
|
|
@ -44,6 +45,7 @@ import org.springframework.context.support.GenericApplicationContext;
@@ -44,6 +45,7 @@ import org.springframework.context.support.GenericApplicationContext;
|
|
|
|
|
import org.springframework.core.annotation.AliasFor; |
|
|
|
|
import org.springframework.core.io.ClassPathResource; |
|
|
|
|
import org.springframework.core.io.Resource; |
|
|
|
|
import org.springframework.util.Assert; |
|
|
|
|
|
|
|
|
|
import static org.assertj.core.api.Assertions.assertThat; |
|
|
|
|
|
|
|
|
|
@ -92,8 +94,8 @@ class AutowiredConfigurationTests {
@@ -92,8 +94,8 @@ class AutowiredConfigurationTests {
|
|
|
|
|
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext( |
|
|
|
|
OptionalAutowiredMethodConfig.class); |
|
|
|
|
|
|
|
|
|
assertThat(context.getBeansOfType(Colour.class).isEmpty()).isTrue(); |
|
|
|
|
assertThat(context.getBean(TestBean.class).getName()).isEqualTo(""); |
|
|
|
|
assertThat(context.getBeansOfType(Colour.class)).isEmpty(); |
|
|
|
|
assertThat(context.getBean(TestBean.class).getName()).isEmpty(); |
|
|
|
|
context.close(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@ -184,14 +186,22 @@ class AutowiredConfigurationTests {
@@ -184,14 +186,22 @@ class AutowiredConfigurationTests {
|
|
|
|
|
context.close(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Test |
|
|
|
|
void testValueInjectionWithAccidentalAutowiredAnnotations() { |
|
|
|
|
AnnotationConfigApplicationContext context = |
|
|
|
|
new AnnotationConfigApplicationContext(ValueConfigWithAccidentalAutowiredAnnotations.class); |
|
|
|
|
doTestValueInjection(context); |
|
|
|
|
context.close(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private void doTestValueInjection(BeanFactory context) { |
|
|
|
|
System.clearProperty("myProp"); |
|
|
|
|
|
|
|
|
|
TestBean testBean = context.getBean("testBean", TestBean.class); |
|
|
|
|
assertThat((Object) testBean.getName()).isNull(); |
|
|
|
|
assertThat(testBean.getName()).isNull(); |
|
|
|
|
|
|
|
|
|
testBean = context.getBean("testBean2", TestBean.class); |
|
|
|
|
assertThat((Object) testBean.getName()).isNull(); |
|
|
|
|
assertThat(testBean.getName()).isNull(); |
|
|
|
|
|
|
|
|
|
System.setProperty("myProp", "foo"); |
|
|
|
|
|
|
|
|
|
@ -204,10 +214,10 @@ class AutowiredConfigurationTests {
@@ -204,10 +214,10 @@ class AutowiredConfigurationTests {
|
|
|
|
|
System.clearProperty("myProp"); |
|
|
|
|
|
|
|
|
|
testBean = context.getBean("testBean", TestBean.class); |
|
|
|
|
assertThat((Object) testBean.getName()).isNull(); |
|
|
|
|
assertThat(testBean.getName()).isNull(); |
|
|
|
|
|
|
|
|
|
testBean = context.getBean("testBean2", TestBean.class); |
|
|
|
|
assertThat((Object) testBean.getName()).isNull(); |
|
|
|
|
assertThat(testBean.getName()).isNull(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Test |
|
|
|
|
@ -271,7 +281,7 @@ class AutowiredConfigurationTests {
@@ -271,7 +281,7 @@ class AutowiredConfigurationTests {
|
|
|
|
|
return new TestBean(""); |
|
|
|
|
} |
|
|
|
|
else { |
|
|
|
|
return new TestBean(colour.get().toString() + "-" + colours.get().get(0).toString()); |
|
|
|
|
return new TestBean(colour.get() + "-" + colours.get().get(0).toString()); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
@ -484,6 +494,32 @@ class AutowiredConfigurationTests {
@@ -484,6 +494,32 @@ class AutowiredConfigurationTests {
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Configuration |
|
|
|
|
static class ValueConfigWithAccidentalAutowiredAnnotations implements InitializingBean { |
|
|
|
|
|
|
|
|
|
boolean invoked; |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public void afterPropertiesSet() { |
|
|
|
|
Assert.state(!invoked, "Factory method must not get invoked on startup"); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Bean @Scope("prototype") |
|
|
|
|
@Autowired |
|
|
|
|
public TestBean testBean(@Value("#{systemProperties[myProp]}") Provider<String> name) { |
|
|
|
|
invoked = true; |
|
|
|
|
return new TestBean(name.get()); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Bean @Scope("prototype") |
|
|
|
|
@Autowired |
|
|
|
|
public TestBean testBean2(@Value("#{systemProperties[myProp]}") Provider<String> name2) { |
|
|
|
|
invoked = true; |
|
|
|
|
return new TestBean(name2.get()); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Configuration |
|
|
|
|
static class PropertiesConfig { |
|
|
|
|
|
|
|
|
|
|