16
16
17
17
package org .springframework .beans .factory .annotation ;
18
18
19
- import org .junit .jupiter .api .BeforeEach ;
20
19
import org .junit .jupiter .api .Test ;
21
20
22
21
import org .springframework .beans .factory .config .BeanDefinition ;
33
32
*/
34
33
class LookupAnnotationTests {
35
34
36
- private DefaultListableBeanFactory beanFactory ;
37
-
38
-
39
- @ BeforeEach
40
- void setup () {
41
- beanFactory = new DefaultListableBeanFactory ();
42
- AutowiredAnnotationBeanPostProcessor aabpp = new AutowiredAnnotationBeanPostProcessor ();
43
- aabpp .setBeanFactory (beanFactory );
44
- beanFactory .addBeanPostProcessor (aabpp );
45
- beanFactory .registerBeanDefinition ("abstractBean" , new RootBeanDefinition (AbstractBean .class ));
46
- beanFactory .registerBeanDefinition ("beanConsumer" , new RootBeanDefinition (BeanConsumer .class ));
47
- RootBeanDefinition tbd = new RootBeanDefinition (TestBean .class );
48
- tbd .setScope (BeanDefinition .SCOPE_PROTOTYPE );
49
- beanFactory .registerBeanDefinition ("testBean" , tbd );
50
- }
51
-
52
-
53
35
@ Test
54
36
void testWithoutConstructorArg () {
37
+ DefaultListableBeanFactory beanFactory = configureBeanFactory ();
55
38
AbstractBean bean = (AbstractBean ) beanFactory .getBean ("abstractBean" );
56
39
Object expected = bean .get ();
57
40
assertThat (expected .getClass ()).isEqualTo (TestBean .class );
@@ -60,6 +43,7 @@ void testWithoutConstructorArg() {
60
43
61
44
@ Test
62
45
void testWithOverloadedArg () {
46
+ DefaultListableBeanFactory beanFactory = configureBeanFactory ();
63
47
AbstractBean bean = (AbstractBean ) beanFactory .getBean ("abstractBean" );
64
48
TestBean expected = bean .get ("haha" );
65
49
assertThat (expected .getClass ()).isEqualTo (TestBean .class );
@@ -69,6 +53,7 @@ void testWithOverloadedArg() {
69
53
70
54
@ Test
71
55
void testWithOneConstructorArg () {
56
+ DefaultListableBeanFactory beanFactory = configureBeanFactory ();
72
57
AbstractBean bean = (AbstractBean ) beanFactory .getBean ("abstractBean" );
73
58
TestBean expected = bean .getOneArgument ("haha" );
74
59
assertThat (expected .getClass ()).isEqualTo (TestBean .class );
@@ -78,6 +63,7 @@ void testWithOneConstructorArg() {
78
63
79
64
@ Test
80
65
void testWithTwoConstructorArg () {
66
+ DefaultListableBeanFactory beanFactory = configureBeanFactory ();
81
67
AbstractBean bean = (AbstractBean ) beanFactory .getBean ("abstractBean" );
82
68
TestBean expected = bean .getTwoArguments ("haha" , 72 );
83
69
assertThat (expected .getClass ()).isEqualTo (TestBean .class );
@@ -88,6 +74,7 @@ void testWithTwoConstructorArg() {
88
74
89
75
@ Test
90
76
void testWithThreeArgsShouldFail () {
77
+ DefaultListableBeanFactory beanFactory = configureBeanFactory ();
91
78
AbstractBean bean = (AbstractBean ) beanFactory .getBean ("abstractBean" );
92
79
assertThatExceptionOfType (AbstractMethodError .class ).as ("TestBean has no three arg constructor" ).isThrownBy (() ->
93
80
bean .getThreeArguments ("name" , 1 , 2 ));
@@ -96,6 +83,7 @@ void testWithThreeArgsShouldFail() {
96
83
97
84
@ Test
98
85
void testWithEarlyInjection () {
86
+ DefaultListableBeanFactory beanFactory = configureBeanFactory ();
99
87
AbstractBean bean = beanFactory .getBean ("beanConsumer" , BeanConsumer .class ).abstractBean ;
100
88
Object expected = bean .get ();
101
89
assertThat (expected .getClass ()).isEqualTo (TestBean .class );
@@ -106,7 +94,7 @@ void testWithEarlyInjection() {
106
94
public void testWithNullBean () {
107
95
RootBeanDefinition tbd = new RootBeanDefinition (TestBean .class , () -> null );
108
96
tbd .setScope (BeanDefinition .SCOPE_PROTOTYPE );
109
- beanFactory . registerBeanDefinition ( "testBean" , tbd );
97
+ DefaultListableBeanFactory beanFactory = configureBeanFactory ( tbd );
110
98
111
99
AbstractBean bean = beanFactory .getBean ("beanConsumer" , BeanConsumer .class ).abstractBean ;
112
100
Object expected = bean .get ();
@@ -116,6 +104,7 @@ public void testWithNullBean() {
116
104
117
105
@ Test
118
106
void testWithGenericBean () {
107
+ DefaultListableBeanFactory beanFactory = configureBeanFactory ();
119
108
beanFactory .registerBeanDefinition ("numberBean" , new RootBeanDefinition (NumberBean .class ));
120
109
beanFactory .registerBeanDefinition ("doubleStore" , new RootBeanDefinition (DoubleStore .class ));
121
110
beanFactory .registerBeanDefinition ("floatStore" , new RootBeanDefinition (FloatStore .class ));
@@ -127,6 +116,7 @@ void testWithGenericBean() {
127
116
128
117
@ Test
129
118
void testSingletonWithoutMetadataCaching () {
119
+ DefaultListableBeanFactory beanFactory = configureBeanFactory ();
130
120
beanFactory .setCacheBeanMetadata (false );
131
121
132
122
beanFactory .registerBeanDefinition ("numberBean" , new RootBeanDefinition (NumberBean .class ));
@@ -140,6 +130,7 @@ void testSingletonWithoutMetadataCaching() {
140
130
141
131
@ Test
142
132
void testPrototypeWithoutMetadataCaching () {
133
+ DefaultListableBeanFactory beanFactory = configureBeanFactory ();
143
134
beanFactory .setCacheBeanMetadata (false );
144
135
145
136
beanFactory .registerBeanDefinition ("numberBean" , new RootBeanDefinition (NumberBean .class , BeanDefinition .SCOPE_PROTOTYPE , null ));
@@ -155,6 +146,23 @@ void testPrototypeWithoutMetadataCaching() {
155
146
assertThat (beanFactory .getBean (FloatStore .class )).isSameAs (bean .getFloatStore ());
156
147
}
157
148
149
+ private DefaultListableBeanFactory configureBeanFactory (RootBeanDefinition tbd ) {
150
+ DefaultListableBeanFactory beanFactory = new DefaultListableBeanFactory ();
151
+ AutowiredAnnotationBeanPostProcessor aabpp = new AutowiredAnnotationBeanPostProcessor ();
152
+ aabpp .setBeanFactory (beanFactory );
153
+ beanFactory .addBeanPostProcessor (aabpp );
154
+ beanFactory .registerBeanDefinition ("abstractBean" , new RootBeanDefinition (AbstractBean .class ));
155
+ beanFactory .registerBeanDefinition ("beanConsumer" , new RootBeanDefinition (BeanConsumer .class ));
156
+ beanFactory .registerBeanDefinition ("testBean" , tbd );
157
+ return beanFactory ;
158
+ }
159
+
160
+ private DefaultListableBeanFactory configureBeanFactory () {
161
+ RootBeanDefinition tbd = new RootBeanDefinition (TestBean .class );
162
+ tbd .setScope (BeanDefinition .SCOPE_PROTOTYPE );
163
+ return configureBeanFactory (tbd );
164
+ }
165
+
158
166
159
167
public abstract static class AbstractBean {
160
168
0 commit comments