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

在spring框架的上下文中,“bean x被注入bean y”是什么意思?

  •  0
  • sergionni  · 技术社区  · 14 年前

    看来,这是个很基本的问题。
    无论如何,无法从spring教程中获得下一个定义的含义- “Bean X被注入Bean Y” .

    这是否意味着类之间的组合关系(当一个bean引用另一个bean时)?或者是别的什么?

    谢谢你的回答或解释。

    3 回复  |  直到 14 年前
        1
  •  1
  •   user184794    14 年前

    是的,这个问题很基本。依赖注入是spring框架的基本功能之一。Java类应该尽可能独立,这增加了独立地重用类和测试类的灵活性。对于这种分离,一个类对另一个类的依赖性应该由第三方注入它们,而不是类本身创建另一个对象。

    在spring框架中,称为spring核心容器的轻量级容器执行依赖注入。ie此容器将在所需对象中插入所需的依赖项。

    在web应用程序中,会有一个controller类、一个service类、一个dao类等,在controller类中会有对service类的引用,在service类中会有对dao类的引用。使用Spring时,依赖项可以使用XML或注释或Java配置来配置。

    采取控制器类(MyController,Java)和服务类(MyService,Java)之间的场景,

    在XML配置文件中,我们定义依赖项如下:

    <bean id="myService" class="com.service.MyService"/>
    <bean id="myController" class="com.web.MyController">
    <property name="myService" ref="myService">
    </bean>

    创建控制器bean时,核心容器将解析依赖关系。

        2
  •  0
  •   Daff    14 年前

    它基本上只是意味着您在应用程序上下文中创建了一个具有名称的bean,并将该bean的引用用作另一个bean定义的属性值。

    <bean name="bean1" class="com.example.A">
        <property name="property" value="hello" />
    </bean> 
    <bean id="bean2" class="com.example.B">
        <property name="aProperty" ref="bean1" />
        <property name="x" value="Test" />
    </bean>
    

    在本例中,名为 蚕豆1号 注入 蚕豆2号 . 我想没有更多的了。

        3
  •  0
  •   Kartik    14 年前

    更像是一种联想。组成意味着bean1的生命周期完全依赖于bean2,事实并非如此。可能有一个id=“bean3”的bean依赖于bean 1。例如

    <bean id = "bean3" class = "com.foo.Foo">
      <property name = "aProperty" ref = "bean1" />
    </bean>
    

    在本例中,bean3还与bean 1关联,并且不管理bean 1的生命周期。 但是,spring支持使用内部bean进行组合。它本身不是组合,但是一个新的bean实例可以连接到另一个bean中。下面给出了一个例子

    <bean id = "bean3" class ="com.foo.Foo">
       <property name = "aProperty">
             <bean class = "com.bar.Bar">
                Wire dependencies here.
             </bean>
       </property>
    </bean>
    

    您不需要使用id属性来标识内部be an,因为它将被spring容器忽略。有关内部bean的更多信息,此链接将非常有用。 http://static.springsource.org/spring/docs/2.5.x/reference/beans.html#beans-inner-beans