Spring的Bean管理(xml方式)

Bean實例化的方式

  • Bean實例化:
    在spring裏面通過配置文件 ,來創建對象

實現實例化的三種方式:

  1. 使用類的無參構造:

    • xml中的語句會直接找(User中的)無參構造
  <!-- IOC入門 -->
            <bean id="user" class="cn.itclass.ioc.User"></bean>

如果User中有有參構造並且沒有無參構造,則出現異常

  1. 靜態工廠創建:

    • 創建靜態的方法,然後返回類對象
    • 其中的方法可以用 類名.方法 來調用

靜態工廠類:

    public class Bean2Factory {
    	/**
    	 * 靜態的方法返回bean2的對象
    	 * @return
    	 */
    	public static Bean2 getBean2() {
    		return new Bean2();
    	}
    

xml文件內容:

  !:factory-method="getBean2"  是工廠方法Bean2Factory中的方法

        <!-- 使用靜態工廠創建對象 -->
        <bean id="bean2" class="cn.itclass.ioc.Bean2Factory" factory-method="getBean2"></bean>

測試代碼:

- !出錯地方:context.getBean("bean2");是context的方法

    		Bean2 bean2=(Bean2) context.getBean("bean2");              //getBean是系統的
    		System.out.println(bean2);
    		bean2.add();

實例工廠創建對象

  • 創建不是靜態的方法,再返回類對象
  • xml寫法麻煩

實例方法:其中的方法不能用類名來調用,要創建對象調用

public class Bean3Factory {
	public Bean3 getBean3() {
		return new Bean3();
	}

Bean標籤常用屬性

id屬性:

bean id=“user”

  • 起名稱,id屬性值名稱任意命名
  • id屬性值,不能包含特殊符號
  • 根據id值得到配置對象

class屬性:

  • 創建對象所在類的全路徑class=“cn.itclass.ioc.User”

name屬性:

功能和id屬性一樣的,id屬性值不能包含特殊符號,但是在name屬性值裏面可以包含特殊符號
如:bean name(//也可寫作id)=“user”

scope屬性

singleton:

默認值,單例(單實例) :只有一個對象
只會創建一個對象,所以user1與user的地址是一樣的。

User user=(User) context.getBean("user"); //配置文件中的id值
User user1=(User) context.getBean("user");
多實例:

prototype:

<bean id="user" class="cn.itclass.ioc.User" scope="prototype"></bean>

//user 與user1 地址不一樣

發佈了15 篇原創文章 · 獲贊 7 · 訪問量 4174
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章