似乎是那个非常基本的问题。
无论如何不能从Spring教程中获得下一个定义的含义 - “bean X被注入bean Y”。“bean X注入bean Y”意味着什么在Spring框架的背景下
它是指类之间的组合关系(当一个bean引用另一个时)?或者更多?
谢谢您的解答或参考。
似乎是那个非常基本的问题。
无论如何不能从Spring教程中获得下一个定义的含义 - “bean X被注入bean Y”。“bean X注入bean Y”意味着什么在Spring框架的背景下
它是指类之间的组合关系(当一个bean引用另一个时)?或者更多?
谢谢您的解答或参考。
是的,这个问题是非常基本的。依赖注入是Spring框架的基本功能之一。 Java类应尽可能独立,这增加了独立重用类和测试类的灵活性。对于这种解耦,一个类与另一个类的依赖关系应该由第三方注入它们,而不是该类本身创建另一个对象。
在Spring框架中,一个称为Spring核心容器的轻量级容器执行依赖注入。即这个容器将在需要的对象中注入所需的依赖关系。
在Web应用程序中,会出现一个控制器类,一个服务类,一个dao类等。在控制器类中会引用服务类,在服务类中会有对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被创建时,依赖关系将被核心容器解析。
它基本上只意味着您在应用程序上下文中创建了一个名称为bean的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>
在这个例子中使用的名称bean1豆被注入bean2。我不认为有更多。
它更像是一种关联。构成意味着bean1的生命周期完全依赖于bean2,但情况并非如此。有可能是使用id =“bean3”的bean可以依赖于豆。例如
<bean id = "bean3" class = "com.foo.Foo">
<property name = "aProperty" ref = "bean1" />
</bean>
在这种情况下,bean3也关联到豆1和不管理豆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属性来标识一个内部bean,因为它会通过Spring容器被忽略。有关内部bean的更多信息,此链接将更有用。 http://static.springsource.org/spring/docs/2.5.x/reference/beans.html#beans-inner-beans
非常感谢你,现在很清楚 – sergionni 2010-05-07 08:28:06