BeanPostProcessors are allowed to return a null bean value in the middle of the chain (SPR-6926)
This commit is contained in:
@@ -27,6 +27,7 @@ import static org.junit.matchers.JUnitMatchers.*;
|
||||
import org.springframework.beans.factory.FactoryBean;
|
||||
import org.springframework.beans.factory.NoSuchBeanDefinitionException;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.config.BeanPostProcessor;
|
||||
import org.springframework.context.annotation6.ComponentForScanning;
|
||||
import org.springframework.context.annotation6.ConfigForScanning;
|
||||
import org.springframework.context.annotation6.Jsr330NamedForScanning;
|
||||
@@ -154,6 +155,31 @@ public class AnnotationConfigApplicationContextTests {
|
||||
assertThat(context.getBean(TestBean.class).name, equalTo("foo"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void nullReturningBeanPostProcessor() {
|
||||
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext();
|
||||
context.register(AutowiredConfig.class);
|
||||
context.getBeanFactory().addBeanPostProcessor(new BeanPostProcessor() {
|
||||
public Object postProcessBeforeInitialization(Object bean, String beanName) {
|
||||
return (bean instanceof TestBean ? null : bean);
|
||||
}
|
||||
public Object postProcessAfterInitialization(Object bean, String beanName) {
|
||||
return bean;
|
||||
}
|
||||
});
|
||||
context.getBeanFactory().addBeanPostProcessor(new BeanPostProcessor() {
|
||||
public Object postProcessBeforeInitialization(Object bean, String beanName) {
|
||||
bean.getClass().getName();
|
||||
return bean;
|
||||
}
|
||||
public Object postProcessAfterInitialization(Object bean, String beanName) {
|
||||
bean.getClass().getName();
|
||||
return bean;
|
||||
}
|
||||
});
|
||||
context.refresh();
|
||||
}
|
||||
|
||||
|
||||
@Configuration
|
||||
static class Config {
|
||||
|
||||
Reference in New Issue
Block a user