Spring建立Bean的3種方式
阿新 • • 發佈:2019-02-18
1. Spring建立Bean的三種方式
1. 呼叫構造器(因為常用就不講)
2. 呼叫靜態工廠方法
3. 呼叫例項工廠方法
2. 使用靜態工廠方法
1.此時<bean.../>
元素要指定以下兩個屬性
class:用於指定靜態工廠類的完整類名
factory-method:用於指定建立Bean的靜態工廠方法
2.程式碼:
//介面
public interface Animal{
public void eat();
}
//Dog類
public class Dog implements Animal{
private String msg;
public void setMsg(String msg){
this.msg=msg;
}
public void eat(){
System.out.print(msg);
}
}
//靜態工廠類程式碼
public class AnimalFactroy{
public static Animal getAnimal(String name){
if("dogs".equalsInnoreCase(name)){
return new Dog();
}else{
return new Cat();
}
}
}
3.用配置檔案的形式建立Dog Bean的程式碼:
<bean id="dog" class="com.dfsj.AnimalFactroy" factory-method="getAnimal">
<!--配置靜態工廠方法的引數-->
<constructor-arg value="dogs">
<!--給新建Dog的msg屬性賦值-->
<property name="msg" value="我是狗">
</bean>
3. 使用例項工廠方法建立
此時<bean.../>
元素要指定以下兩個屬性
factory-bean:該屬性值為工廠類在配置檔案中的id
factory-method:用於指定建立Bean的靜態工廠方法
4. 靜態工廠方法與例項工廠方法建立Bean時的區別
不同點
- 靜態工廠要用class屬性指定靜態工廠類的完整類名,而例項工廠用factory-bean指定非靜態工廠類在配置檔案中的id
- 靜態工廠的factory-method指定的方法是靜態方法,而例項工廠的不是
相同點
- 二者都需要factory-method屬性指定生產Bean例項的方法
- 工廠方法需要的引數都要通過
<constructor-arg>
來指定 - 具體的Bean例項的屬性值賦值,都是通過
<property.../>
元素