IOC創建對象的幾種方式


接上一篇IOC入門

 

IOC創建對象的幾種方式

1)調用無參數構造器

2)帶參數構造器

3)工廠創建對象

  工廠類:靜態方法創建對象

  工廠類:非靜態方法創建對象

 

1、對之前的User類進行一些修改,加上一個無參數構造器和一個帶參數構造器

    public User(){
        super();
        System.out.println("無參數構造器");
    }
    
    public User(int id, String name){
        System.out.println("帶參數構造器");
        this.id = id;
        this.name = name;
    }    

1.1、調用無參數構造器創建對象

<bean id="user" class="com.isoftstone.bean.User"></bean> <!--無參數-->
    @Test
    public void testIOC(){
        //創建容器對象
        ApplicationContext ac = new ClassPathXmlApplicationContext("com/isoftstone/xml/applicationContext.xml");
        //獲取容器中的對象
        User user = (User)ac.getBean("user");
        
    }
//輸出"無參數構造器"

1.2、調用有參數構造器創建對象

<!-- 調用帶參數構造器  --> <!--方法1-->
    <bean id="user" class="com.isoftstone.bean.User">
        <constructor-arg value="100" index="0" type="int" ></constructor-arg>
        <constructor-arg value="StanLong" index="1" type="java.lang.String"></constructor-arg>
    </bean> 


<!--方法二 依賴參數--> <bean id="str" class="java.lang.String"> <constructor-arg value="StanLong"></constructor-arg> </bean> <bean id="user" class="com.isoftstone.bean.User"> <constructor-arg index="0" type="int" value="100" ></constructor-arg> <constructor-arg index="1" type="java.lang.String" ref="str"></constructor-arg>
</bean>
    @Test
    public void testIOC(){
        //創建容器對象
        ApplicationContext ac = new ClassPathXmlApplicationContext("com/isoftstone/xml/applicationContext.xml");
        //獲取容器中的對象
        User user = (User)ac.getBean("user");
        
        System.out.println(user.getId());
        System.out.println(user.getName());
        
    }

//輸出"帶參數構造器 100  StanLong"

1.3、通過工廠類創建對象

//先創建一個工廠類
//
工廠類 public class ObjectFactory { //實例方法創建對象 public User getInstance(){ return new User(100, "調用實例方法"); } //靜態方法創建對象 public static User getStaticInstance(){ return new User(101, "調用靜態方法"); } }

1.3.1 實例方法

<!-- 工廠類創建對象 -->
    <!-- #實例方法 -->
    <!-- 先創建工廠 -->
    <bean id="factory" class="com.isoftstone.factory.ObjectFactory">
    </bean>
   <!-- 再創建User對象、用factory實例方法 -->
    <bean id="user" factory-bean="factory" factory-method="getInstance">
    </bean>
  @Test
    public void testIOC(){
        //創建容器對象
        ApplicationContext ac = new ClassPathXmlApplicationContext("com/isoftstone/xml/applicationContext.xml");
        //獲取容器中的對象
        User user = (User)ac.getBean("user");
        
        System.out.println(user.getId());
        System.out.println(user.getName());
        
    }

//輸出"帶參數構造器    100  調用實例方法"

 

1.3.2 靜態方法

<!-- #工廠類的靜態方法 -->
    <bean id="user" class="com.isoftstone.factory.ObjectFactory" factory-method="getStaticInstance">
    </bean>
  @Test
    public void testIOC(){
        //創建容器對象
        ApplicationContext ac = new ClassPathXmlApplicationContext("com/isoftstone/xml/applicationContext.xml");
        //獲取容器中的對象
        User user = (User)ac.getBean("user");
        
        System.out.println(user.getId());
        System.out.println(user.getName());
        
    }

//輸出"帶參數構造器    101  調用靜態方法"

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM