我正在使用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
任何想法为什么它不顺利?
感谢。
答案 0 :(得分:2)
不是这一行
innerContext.registerSingleton("beanName", FixSessionBean.class);
注册名为“beanName”的bean,而不是beanName
- 参数的值?也许你打算改用参数。
答案 1 :(得分:0)
如果你想获得那个,你应该将bean类名称传递给FixSessionBean.class
,如果你发布了所有内容,你的appctx中没有定义mm1。