我正在使用Spring3.1

我已经以编程方式注册了Bean,我也想以编程方式检索它,但没有成功。

public void createBean(String beanName, String beanParam) {
    System.out.println("beanName=" + beanName + " beanParam=" + beanParam);
    ApplicationContext context = ApplicationContextSingleton.getApplicationContext();
    StaticApplicationContext innerContext;= new StaticApplicationContext(context);
    innerContext.registerSingleton("beanName", FixSessionBean.class);
    configureBean(innerContext, beanName, beanParam);
}

public void configureBean(ApplicationContext innerContext, String beanName, String beanParam) {
    innerContext.getBean(beanName);
    FixSessionBean fixSessionBean = (FixSessionBean) innerContext.getBean(beanName);
}


从我的applicationContext:

<bean id="FixSessionBean" class="com.finbird.fixgw.beans.FixSessionBean" />


这是一些日志证据:

beanName=mm1 beanParam=mm2
2012-07-09 13:07:31,016 com.fixgw.test.TriggerBean [ERROR] org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'mm1' is defined
org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'mm1' is defined


知道为什么进展不顺利吗?

谢谢。

最佳答案

这行不是

innerContext.registerSingleton("beanName", FixSessionBean.class);


注册名称为beanName的bean,而不是beanName参数的值?也许您打算使用该参数。

10-05 23:28