Provide default ParameterNameDiscoverer for AACBF
Prior to this change, AbstractAutowireCapableBeanFactory did not support a default ParameterNameDiscoverer. This meant that attempting to use <constructor-arg name=".."> syntax would fail (with a fairly obscure exception) as that feature depends on a ParameterNameDiscoverer to introspect the constructor arguments. This lack of a default was originally intended to avoid a dependency on ASM, but now that (a) .asm is a built-in module and (b) .beans has a non-optional compile-time dependency on .asm, there is no reason not to provide this default. The net effect is that in a number of locations throughout the framework, namely in GenericApplicationContext and AbstractRefreshableApplicationContext, it is no longer necessary to explicitly call AACBF#setParameterNameDiscoverer. This also means that using a naked BeanFactory (likely for testing scenarios) is that much easier. Issue: SPR-8184
This commit is contained in:
@@ -1350,7 +1350,6 @@ public class DefaultListableBeanFactoryTests {
|
||||
@Test
|
||||
public void testAutowireBeanByTypeWithTwoMatchesAndParameterNameDiscovery() {
|
||||
DefaultListableBeanFactory lbf = new DefaultListableBeanFactory();
|
||||
lbf.setParameterNameDiscoverer(new LocalVariableTableParameterNameDiscoverer());
|
||||
RootBeanDefinition bd = new RootBeanDefinition(TestBean.class);
|
||||
RootBeanDefinition bd2 = new RootBeanDefinition(TestBean.class);
|
||||
lbf.registerBeanDefinition("test", bd);
|
||||
|
||||
@@ -107,7 +107,6 @@ public class FactoryMethodTests {
|
||||
@Test
|
||||
public void testFactoryMethodsWithNullValue() {
|
||||
DefaultListableBeanFactory xbf = new DefaultListableBeanFactory();
|
||||
xbf.setParameterNameDiscoverer(new LocalVariableTableParameterNameDiscoverer());
|
||||
XmlBeanDefinitionReader reader = new XmlBeanDefinitionReader(xbf);
|
||||
reader.loadBeanDefinitions(new ClassPathResource("factory-methods.xml", getClass()));
|
||||
|
||||
|
||||
@@ -103,7 +103,7 @@ public class SimpleConstructorNamespaceHandlerTests {
|
||||
|
||||
private XmlBeanFactory createFactory(String resourceName) {
|
||||
XmlBeanFactory fact = new XmlBeanFactory(new ClassPathResource(resourceName, getClass()));
|
||||
fact.setParameterNameDiscoverer(new LocalVariableTableParameterNameDiscoverer());
|
||||
//fact.setParameterNameDiscoverer(new LocalVariableTableParameterNameDiscoverer());
|
||||
return fact;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user