@@ -148,25 +148,53 @@ void autowiringIsEnabledByDefault() {
148
148
void nullReturningBeanPostProcessor () {
149
149
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext ();
150
150
context .register (AutowiredConfig .class );
151
+ // 1st BPP always gets invoked
151
152
context .getBeanFactory ().addBeanPostProcessor (new BeanPostProcessor () {
152
153
@ Override
153
154
public Object postProcessBeforeInitialization (Object bean , String beanName ) {
155
+ if (bean instanceof TestBean ) {
156
+ TestBean testBean = (TestBean ) bean ;
157
+ testBean .name = testBean .name + "-before" ;
158
+ }
159
+ return bean ;
160
+ }
161
+ @ Override
162
+ public Object postProcessAfterInitialization (Object bean , String beanName ) {
163
+ if (bean instanceof TestBean ) {
164
+ TestBean testBean = (TestBean ) bean ;
165
+ testBean .name = testBean .name + "-after" ;
166
+ }
167
+ return bean ;
168
+ }
169
+ });
170
+ // 2nd BPP always returns null for a TestBean
171
+ context .getBeanFactory ().addBeanPostProcessor (new BeanPostProcessor () {
172
+ @ Override
173
+ public Object postProcessBeforeInitialization (Object bean , String beanName ) {
174
+ return (bean instanceof TestBean ? null : bean );
175
+ }
176
+ @ Override
177
+ public Object postProcessAfterInitialization (Object bean , String beanName ) {
154
178
return (bean instanceof TestBean ? null : bean );
155
179
}
156
180
});
181
+ // 3rd BPP never gets invoked with a TestBean
157
182
context .getBeanFactory ().addBeanPostProcessor (new BeanPostProcessor () {
158
183
@ Override
159
184
public Object postProcessBeforeInitialization (Object bean , String beanName ) {
160
- bean . getClass (). getName ( );
185
+ assertThat ( bean ). isNotInstanceOf ( TestBean . class );
161
186
return bean ;
162
187
}
163
188
@ Override
164
189
public Object postProcessAfterInitialization (Object bean , String beanName ) {
165
- bean . getClass (). getName ( );
190
+ assertThat ( bean ). isNotInstanceOf ( TestBean . class );
166
191
return bean ;
167
192
}
168
193
});
169
194
context .refresh ();
195
+ TestBean testBean = context .getBean (TestBean .class );
196
+ assertThat (testBean ).isNotNull ();
197
+ assertThat (testBean .name ).isEqualTo ("foo-before-after" );
170
198
}
171
199
172
200
@ Test
0 commit comments