1. 程式人生 > 其它 >Spring-IOC學習筆記-02基於XML建立Bean

Spring-IOC學習筆記-02基於XML建立Bean

基於XML建立Bean

文章目錄

4.1 基於構造方法

4.1.1 無參構造

預設的就是無參構造

Women在無參構造輸出

public Woman() {
  System.out.println("無參海選女嘉賓");
}

配置bean

<bean id="lili" class="com.moon.entity.Woman">
<property name="name" value="莉莉"/> <property name="age" value="18"/> <property name="outLook" value="面容較好的"/> </bean>

建立IOC

public static void main(String[] args) {
  new ClassPathXmlApplicationContext("applicationContext.xml"
); }

結果

在這裡插入圖片描述

4.1.2 有引數構造

在使用有參構造器建立時,也需要同時將依賴注入。

<bean id="lili" class="com.moon.entity.Woman">
  <constructor-arg name="name" value="莉莉"/>
  <constructor-arg name="age" value="18"/>
  <constructor-arg name="outLook"
value="面容較好的"/>
</bean>

4.2 基於工廠模式

隱藏建立的細節

4.2.1 靜態工廠

java靜態工廠類

public class WomanStaticFactory {
    public static Woman selectLili(){
        Woman lili = new Woman();
        lili.setName("莉莉");
        lili.setAge(18);
        lili.setOutLook("面容較好的");
        return lili;
    }
    public static Woman selectMary(){
        Woman lili = new Woman();
        lili.setName("瑪麗");
        lili.setAge(20);
        lili.setOutLook("體態豐滿的");
        return lili;
    }
}

配置靜態工廠

<!-- 通過class定位到靜態工廠類,使用factory-menthod定位到方法 --> 
<bean id="lili" class="com.moon.factory.WomanStaticFactory" factory-method="selectLili"/>
<bean id="mary" class="com.moon.factory.WomanStaticFactory" factory-method="selectMary"/>

4.2.2 工廠例項

java例項工廠類

public class WomanFactory {
    public Woman selectLili(){
        Woman lili = new Woman();
        lili.setName("莉莉");
        lili.setAge(18);
        lili.setOutLook("面容較好的");
        return lili;
    }
    public Woman selectMary(){
        Woman lili = new Woman();
        lili.setName("瑪麗");
        lili.setAge(20);
        lili.setOutLook("體態豐滿的");
        return lili;
    }
}

配置例項工廠

<!-- 添加工廠的bean(使用工廠類的無參建立) -->
<bean id="factory" class="com.moon.factory.WomanFactory"/>

<!-- 不用使用class去定位,直接用factory-bean定位到一個工廠物件,使用factory-method定位到工廠方法 -->
<bean id="lili" factory-bean="factory" factory-method="selectLili"/>
<bean id="mary" factory-bean="factory" factory-method="selectMary"/>

4.3 配置檔案書寫規範

1、<bean/> 標籤中的id和name都是用來設定物件在IOC中標識。區別如下:

  • 同一個配置檔案不可以重複
  • 如果在不同配置檔案中出現相同的 IDNamebean,排序在後面的bean會覆蓋前面的 bean
  • 同一個bean中同時配置了idname,那麼 id為容器中的唯一標誌,而name為別名,如果配置了多個name,那麼 name全部是別名
  • 如果 這個bean配置了name沒有id,那麼name為唯一標誌。如果name配置了多個,那麼第一個name是唯一標誌,剩餘的name為別名
  • 在一個bean中,name可以寫多個標誌,id只能設定唯一標誌。

2、如果沒有配置name和id的話,ioc容器會給bean設定一個預設標識,該標識是bean的class+#數字標識,數字從0開始。

com.moon.entity.Woman#0

如過根據標識去獲取類,只寫了全類名,ioc會去獲取全類名+#0的bean,也就是第一個bean。