Spring Bean引用例子
如何注入值到Spring bean屬性
Spring bean加載多個配置文件
Spring內部bean實例
Spring Bean作用域實例
Spring集合 (List,Set,Map,Properties) 實例
Spring ListFactoryBean實例
Spring SetFactoryBean實例
Spring MapFactoryBean例子
Spring注入日期到bean屬性-CustomDateEditor
Spring PropertyPlaceholderConfigurer實例
Spring bean配置繼承
Spring依賴檢查
Spring使用@Required註解依賴檢查
Spring自定義@Required-style註解
Spring Bean InitializingBean和DisposableBean實例
Spring Bean init-method 和 destroy-method實例
Spring @PostConstruct和@PreDestroy實例
Spring依賴注入(DI)
在Spring框架中,依賴注入(DI)的設計模式是用來定義對象彼此間的依賴。它主要有兩種類型:
- Setter方法注入
- 構造器注入
1. Setter方法注入
這是最流行最簡單的DI注入方法,通過設置方法注入依賴。
示例
幫助器類和指定的setter方法
package com.yiibai.output;
import com.yiibai.output.IOutputGenerator;
public class OutputHelper
{
IOutputGenerator outputGenerator;
public void setOutputGenerator(IOutputGenerator outputGenerator){
this.outputGenerator = outputGenerator;
}
}
一個 bean 配置文件用來聲明bean 和通過 setter 設置注入(property標籤)的依賴。
<bean id="OutputHelper" class="com.yiibai.output.OutputHelper">
<property name="outputGenerator">
<ref bean="CsvOutputGenerator" />
</property>
</bean>
只需注入一個「CsvOutputGenerator」 bean 到 「OutputHelper」對象,通過一個 setter 方法(setOutputGenerator)。
2.構造函數注入
此DI方法將通過構造函數注入依賴。
示例
一個輔助類的構造函數。
package com.yiibai.output;
import com.yiibai.output.IOutputGenerator;
public class OutputHelper
{
IOutputGenerator outputGenerator;
OutputHelper(IOutputGenerator outputGenerator){
this.outputGenerator = outputGenerator;
}
}
bean 配置文件來聲明bean並通過構造函數(constructor-arg標籤)設置注入依賴。
<bean id="OutputHelper" class="com.yiibai.output.OutputHelper">
<constructor-arg>
<bean class="com.yiibai.output.impl.CsvOutputGenerator" />
</constructor-arg>
</bean>
只需通過一個構造函數注入一個 「CsvOutputGenerator」 Bean 到 「OutputHelper」 對象。
setter方法還是構造函數注入?
Spring框架的設置有沒有硬性規定,只需要使用適合你的項目需要的類型注入。然而,由於setter方法注入簡單,它總是大部分使用場景的選擇。
參考