Skip to content

Commit f2fe7f3

Browse files
committed
Improve nullReturningBeanPostProcessor() test
See gh-28459
1 parent 48c797e commit f2fe7f3

File tree

1 file changed

+31
-3
lines changed

1 file changed

+31
-3
lines changed

spring-context/src/test/java/org/springframework/context/annotation/AnnotationConfigApplicationContextTests.java

Lines changed: 31 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2002-2020 the original author or authors.
2+
* Copyright 2002-2022 the original author or authors.
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.
@@ -148,25 +148,53 @@ void autowiringIsEnabledByDefault() {
148148
void nullReturningBeanPostProcessor() {
149149
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext();
150150
context.register(AutowiredConfig.class);
151+
// 1st BPP always gets invoked
151152
context.getBeanFactory().addBeanPostProcessor(new BeanPostProcessor() {
152153
@Override
153154
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) {
154178
return (bean instanceof TestBean ? null : bean);
155179
}
156180
});
181+
// 3rd BPP never gets invoked with a TestBean
157182
context.getBeanFactory().addBeanPostProcessor(new BeanPostProcessor() {
158183
@Override
159184
public Object postProcessBeforeInitialization(Object bean, String beanName) {
160-
bean.getClass().getName();
185+
assertThat(bean).isNotInstanceOf(TestBean.class);
161186
return bean;
162187
}
163188
@Override
164189
public Object postProcessAfterInitialization(Object bean, String beanName) {
165-
bean.getClass().getName();
190+
assertThat(bean).isNotInstanceOf(TestBean.class);
166191
return bean;
167192
}
168193
});
169194
context.refresh();
195+
TestBean testBean = context.getBean(TestBean.class);
196+
assertThat(testBean).isNotNull();
197+
assertThat(testBean.name).isEqualTo("foo-before-after");
170198
}
171199

172200
@Test

0 commit comments

Comments
 (0)