2010-05-06 58 views

回答

1

是的,这个问题是非常基本的。依赖注入是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被创建时,依赖关系将被核心容器解析。

+0

非常感谢你,现在很清楚 – sergionni 2010-05-07 08:28:06

0

它基本上只意味着您在应用程序上下文中创建了一个名称为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。我不认为有更多。

+0

Daff,你的意思是bean1 for ref? – sergionni 2010-05-06 14:36:25

+0

是的,对不起,搞砸了重命名;) – Daff 2010-05-06 14:38:54

0

它更像是一种关联。构成意味着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