Fix potential NPE

This commit fixes a potential NPE when determining the priority of a
bean instance in case multiple candidates exist and no bean was marked
as @Primary

Issue: SPR-12024
This commit is contained in:
Stephane Nicoll
2014-07-23 18:51:09 +02:00
parent 7ce709309d
commit e849bc3e90
2 changed files with 35 additions and 3 deletions

View File

@@ -1403,6 +1403,17 @@ public class DefaultListableBeanFactoryTests {
lbf.getBean(TestBean.class);
}
@Test
public void testGetBeanByTypeWithPriorityAndNullInstance() throws Exception {
DefaultListableBeanFactory lbf = new DefaultListableBeanFactory();
RootBeanDefinition bd1 = new RootBeanDefinition(HighPriorityTestBean.class);
RootBeanDefinition bd2 = new RootBeanDefinition(NullTestBeanFactoryBean.class);
lbf.registerBeanDefinition("bd1", bd1);
lbf.registerBeanDefinition("bd2", bd2);
TestBean bean = lbf.getBean(TestBean.class);
assertThat(bean.getBeanName(), equalTo("bd1"));
}
@Test
public void testGetBeanByTypePrimaryHasPrecedenceOverPriority() throws Exception {
DefaultListableBeanFactory lbf = new DefaultListableBeanFactory();
@@ -2893,5 +2904,23 @@ public class DefaultListableBeanFactoryTests {
@Priority(500)
private static class LowPriorityTestBean extends TestBean {}
private static class NullTestBeanFactoryBean<T> implements FactoryBean<TestBean> {
@Override
public TestBean getObject() throws Exception {
return null;
}
@Override
public Class<?> getObjectType() {
return TestBean.class;
}
@Override
public boolean isSingleton() {
return true;
}
}
}