代码之家  ›  专栏  ›  技术社区  ›  FoxyBOA

Spring:按名称获取内联bean

  •  1
  • FoxyBOA  · 技术社区  · 14 年前

    我想用它的名字来得到内豆。Spring API有可能吗?

    ConfigurableApplicationContext.getBean(String paramString)
    

    XML示例:

    <bean id="parent" parent="t_Parent">
        <property name="items">
            <bean id="child" parent="t_Child">
                <property name="ABC" value="test"/>
            </bean>
        </property>
    </bean>
    

    我想通过id“Child”获取内部(t_Child)bean。E、 g.ConfigurableApplicationContext.getBean(“子”)。春天找不到这样的豆子(因为它是内在的)。同时,getBean(“parent”)运行良好。

    有什么想法吗?

    4 回复  |  直到 14 年前
        1
  •  4
  •   Bozho Michał Mech    14 年前

    你不能。

    the docs :

    or元素中的元素用于定义所谓的内部bean。内部bean定义不需要定义任何id或名称,最好甚至不指定任何id或名称值 因为id或name值将被容器忽略 .

    如果你需要它,就把它定义为一个普通的bean。

        2
  •  2
  •   Alois Cochard    14 年前

    不能,但可以在外部创建内部bean(因此它不再是内部bean…),然后在属性内部引用它:

    <bean id="child" parent="t_Child">
        <property name="ABC" value="test"/>
    </bean>
    
    <bean id="parent" parent="t_Parent">
        <property name="items" ref="child"/>
    </bean>
    
        3
  •  1
  •   Sean Patrick Floyd    14 年前

    BeanWrapper 接口:

    final BeanWrapper bw =
        new BeanWrapperImpl(applicationContext.getBean("parent"));
    Object innerBean = bw.getPropertyValue("child");
    

    参考:

        4
  •  0
  •   David M. Karr    14 年前

    link text ). 从Java执行此操作的代码可能有点类似,不过我找不到这个场景的确切示例。