在Spring框架中,依赖注入(DI)的设计模式是用来定义对象彼此间的依赖。它主要有两种类型:
Setter方法注入
构造器注入
1. Setter方法注入
Setter方法注入是最流行最简单的DI注入方法,通过设置方法注入依赖。
<bean id="articleService" class="com.angelia.spring.service.ArticleServiceImpl" >
<property name="articleDao">
<ref bean="articleDao" />
</property>
</bean>
2.构造函数注入
此DI方法将通过构造函数注入依赖。
<bean id="articleService" class="com.angelia.spring.service.ArticleServiceImpl" >
<constructor-arg>
<ref bean="articleDao" />
</constructor-arg>
</bean>
在Spring框架中,当一个类包含多个构造函数带的参数相同,它总是会造成构造函数注入参数类型歧义的问题。然而,由于setter方法注入简单,因此大部分场景选择使用setter注入。
3. Spring内部bean
在Spring框架中,一个bean仅用于一个特定的属性,这是提醒其声明为一个内部bean。内部bean支持setter注入“property”和构造器注入"constructor-arg“。
<bean id="articleService" class="com.angelia.spring.service.ArticleServiceImpl">
<property name="articleDao">
<bean class="com.angelia.spring.dao.ArticleDaoImpl">
<property name="dataSource" ref="dataSource" />
</bean>
</property>
</bean>
---------------------------------------------------------------------------------
<bean id="articleService" class="com.angelia.spring.service.ArticleServiceImpl">
<constructor-arg>
<bean class="com.angelia.spring.dao.ArticleDaoImpl">
<property name="dataSource" ref="dataSource" />
</bean>
</constructor-arg>
</bean>