1. 程式人生 > >Spring建立Bean的3種方式

Spring建立Bean的3種方式

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時的區別

不同點

  1. 靜態工廠要用class屬性指定靜態工廠類的完整類名,而例項工廠用factory-bean指定非靜態工廠類在配置檔案中的id
  2. 靜態工廠的factory-method指定的方法是靜態方法,而例項工廠的不是

相同點

  1. 二者都需要factory-method屬性指定生產Bean例項的方法
  2. 工廠方法需要的引數都要通過<constructor-arg>來指定
  3. 具體的Bean例項的屬性值賦值,都是通過<property.../>元素