Spring运行时Bean引用
我正在为一个Spring项目解析一个自定义名称空间,但在RuntimeBeanReference方面遇到了问题。我有一个类MyClass,它接受一个列表。在我的beandef文件中,定义了一个名为“MyObj”的MyObject类型的bean 在我的自定义命名空间解析器中,我有如下代码:Spring运行时Bean引用,spring,namespaces,Spring,Namespaces,我正在为一个Spring项目解析一个自定义名称空间,但在RuntimeBeanReference方面遇到了问题。我有一个类MyClass,它接受一个列表。在我的beandef文件中,定义了一个名为“MyObj”的MyObject类型的bean 在我的自定义命名空间解析器中,我有如下代码: RootBeanDefinition myBean = new RootBeanDefinition(MyClass.class); ConstructorArgumentValues cav
RootBeanDefinition myBean = new RootBeanDefinition(MyClass.class);
ConstructorArgumentValues cav = new ConstructorArgumentValues();
List list = new LinkedList();
list.add(new RuntimeBeanReference("MyObj"));
cav.addIndexedArgumentValue(0, list);
然而,当我通过spring查找bean时,我得到一个异常,说它无法将RuntimeBeanReference转换为MyObject。我是否需要做一些特定的事情来强制解决引用
谢谢
杰夫,我刚找到它。我需要使用ManagedList而不是常规LinkedList。ManagedList(和ManagedMap)将由Spring解析引用。正如您所发现的,您可以通过两种方式添加内部bean列表: 内部bean作为引用
// Create list of bean references
List<RuntimeBeanReference> innerBeans = new ManagedList<RuntimeBeanReference>();
innerBeans.add(new RuntimeBeanReference("innerBean1"));
innerBeans.add(new RuntimeBeanReference("innerBean2"));
// Root bean definition
BeanDefinitionBuilder rootBeanDefinitionBuilder = BeanDefinitionBuilder
.rootBeanDefinition(RootBean.class)
.addPropertyValue("innerBeans", innerBeans);
//创建bean引用列表
List innerBeans=newmanagedlist();
添加(新的RuntimeBean引用(“innerBean1”);
添加(新的RuntimeBean引用(“innerBean2”);
//根bean定义
BeanDefinitionBuilder根BeanDefinitionBuilder=BeanDefinitionBuilder
.RootBean定义(RootBean.class)
.addPropertyValue(“innerBeans”,innerBeans);
作为内联定义的内部bean
// Create list of bean references
List<BeanDefinition> innerBeans = new ManagedList<BeanDefinition>();
innerBeans.add(innerBean1Definition);
innerBeans.add(innerBean2Definition);
// Root bean definition
BeanDefinitionBuilder rootBeanDefinitionBuilder = BeanDefinitionBuilder
.rootBeanDefinition(RootBean.class)
.addPropertyValue("innerBeans", innerBeans);
//创建bean引用列表
List innerBeans=newmanagedlist();
add(innerbean1定义);
添加(innerBean2Definition);
//根bean定义
BeanDefinitionBuilder根BeanDefinitionBuilder=BeanDefinitionBuilder
.RootBean定义(RootBean.class)
.addPropertyValue(“innerBeans”,innerBeans);