getBean的意外行为(String beanName,Object args)

时间:2011-11-23 09:08:40

标签: spring

我正在使用getBean(beanName,new Object{"anupama"})来覆盖我的spring bean中使用的构造函数值静态工厂方法。但它仍然会选择spring-application.xml中提到的默认值,而不是从getBean()中提取它。

代码:

<beans
      xmlns="springframework.org/schema/beans"
      xmlns:xsi="w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="springframework.org/schema/beans springframework.org/schema/beans/spring-beans-2.5.xsd"
      default-lazy-init="false">
   <bean id="oneServiceImplementation"
         class="sample.oneServiceImplementation"
         factory-method="getInstance"
         scope="prototype">
      <constructor-arg value="anu"/>
   </bean>
</beans>

在我班上:

Object returnObj = reference.getFactory().getBean("oneServiceImplementation",
                   new Object{"anupama"} );

上面的调用应该将参数anupama传递给getInstance(String)方法,但是我在getInstance(String)方法中得到了默认的“anu”。

1 个答案:

答案 0 :(得分:0)

我认为这甚至没有编译:

new Object{"anupama"}

如果oneServiceImplementation.getInstance需要一个String,那么你应该提供一个:

Object returnObj = reference.getFactory().getBean("oneServiceImplementation","anupama" );