JavaWeb_(Spring框架)xml配置文件


 

 

  系列博文

    JavaWeb_(Spring框架)xml配置文件    傳送門

    JavaWeb_(Spring框架)注解配置    傳送門

 

 

Xml配置

  a)Bean元素:交由Spring管理的對象都要配置在bean標簽中;
    i.Bean標簽介紹和創建方式:空參構造、靜態工廠、動態工廠;
    ii.Scope屬性介紹:singleton、protoptype、request、session;
    iii.初始化方法Init-method和 銷毀方法destroy-method介紹;
  b)屬性注入:
    i.Set方法注入;
    ii.構造函數注入;
    iii.復雜類型注入:Array、List、Set、Map、Properties

 

  1、xml配置-bean標簽-配置及創建方式

  ApplicationContext 配置的所有bean都會在容器創建的時候被創建出來,

  如果配置的bean較多,那么在創建容的時候,會產生內存過大的問題;這種情況在機器硬件性能較為落后的時候體現的比較明顯;

  延遲加載(懶加載) true就是創建容器時不加載配置的bean對象,在獲取的時候才創建;

<!-- name 是起一個名字,我們可以通過這個name來利用容器獲取對象 
       name 可以使用特殊字符
       name 可以重復 
       我們在實際開發中不推薦將多個對象名字命名為重復的-->
       <!-- id與name作用基本相同,單不推薦使用 不支持特殊字符,不能重復 -->
       
<!-- class:是被管理對象的全包名,spring會通過這個包名來創建對象 -->
    <bean name="user" class="com.Gary.bean.User" lazy-init ="true">
        <!-- 為u_id注入了一個id為2的值 -->
        <property name="u_id" value="2"></property>

    </bean>

 

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
            xmlns="http://www.springframework.org/schema/beans" 
            xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd ">


<!-- name 是起一個名字,我們可以通過這個name來利用容器獲取對象 
       name 可以使用特殊字符
       name 可以重復 
       我們在實際開發中不推薦將多個對象名字命名為重復的-->
       <!-- id與name作用基本相同,單不推薦使用 不支持特殊字符,不能重復 -->
       
<!-- class:是被管理對象的全包名,spring會通過這個包名來創建對象 -->
<!-- request 在web環境下,如果scope屬性為request 那么這個對象被創建出來 他的生命周期會與request請求一致-->
<!-- session 同理 ,生命周期與session一致 -->
    <bean name="user" class="com.Gary.bean.User" lazy-init ="true">
        <!-- 為u_id注入了一個id為2的值 -->
        <property name="u_id" value="2"></property>

    </bean>

</beans>        
applicationContext.xml

 

 

  2、xml配置-bean標簽-scope屬性

  scope="singleton"   表示<bean>是單例的

  <bean name="user" class="com.Gary.bean.User" lazy-init ="true" scope="singleton">
    <!-- 為u_id注入了一個id為2的值 -->
    <property name="u_id" value="2"></property>
  </bean>

 

 

package com.Gary.test;

import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.Gary.bean.User;

public class HelloSpring2 {

    //Spring是一個容器,它將幫助我們管理對象
    @Test
    public void Test2() {
    
        ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
        
        //scope="singleton"  默認值  單例的 只允許創建出一份
        
        User u1 = (User) ac.getBean("user");
        User u2 = (User) ac.getBean("user");
        User u3 = (User) ac.getBean("user");
        
        System.out.println(u1==u2);
        
    }
    
    
}
HelloSpring2.java

 

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
            xmlns="http://www.springframework.org/schema/beans" 
            xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd ">


<!-- name 是起一個名字,我們可以通過這個name來利用容器獲取對象 
       name 可以使用特殊字符
       name 可以重復 
       我們在實際開發中不推薦將多個對象名字命名為重復的-->
       <!-- id與name作用基本相同,單不推薦使用 不支持特殊字符,不能重復 -->
       
<!-- class:是被管理對象的全包名,spring會通過這個包名來創建對象 -->
<!-- request 在web環境下,如果scope屬性為request 那么這個對象被創建出來 他的生命周期會與request請求一致-->
<!-- session 同理 ,生命周期與session一致 -->
    <bean name="user" class="com.Gary.bean.User" lazy-init ="true" scope="singleton">
        <!-- 為u_id注入了一個id為2的值 -->
        <property name="u_id" value="2"></property>

    </bean>

</beans>        
applicationContext.xml

 

  scope="prototype"   表示<bean>是多例的

  <bean name="user" class="com.Gary.bean.User" lazy-init ="true" scope="prototype">
    <!-- 為u_id注入了一個id為2的值 -->
    <property name="u_id" value="2"></property>
  </bean>

 

 

package com.Gary.test;

import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.Gary.bean.User;

public class HelloSpring2 {

    //Spring是一個容器,它將幫助我們管理對象
    @Test
    public void Test2() {
    
        ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
        
        //scope="prototype"  多例的   允許創建出多份對象
        
        User u1 = (User) ac.getBean("user");
        User u2 = (User) ac.getBean("user");
        User u3 = (User) ac.getBean("user");
        
        System.out.println(u1==u2);
        
    }
    
    
}
HelloSpring2.java

 

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
            xmlns="http://www.springframework.org/schema/beans" 
            xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd ">


<!-- name 是起一個名字,我們可以通過這個name來利用容器獲取對象 
       name 可以使用特殊字符
       name 可以重復 
       我們在實際開發中不推薦將多個對象名字命名為重復的-->
       <!-- id與name作用基本相同,單不推薦使用 不支持特殊字符,不能重復 -->
       
<!-- class:是被管理對象的全包名,spring會通過這個包名來創建對象 -->
<!-- request 在web環境下,如果scope屬性為request 那么這個對象被創建出來 他的生命周期會與request請求一致-->
<!-- session 同理 ,生命周期與session一致 -->
    <bean name="user" class="com.Gary.bean.User" lazy-init ="true" scope="prototype">
        <!-- 為u_id注入了一個id為2的值 -->
        <property name="u_id" value="2"></property>

    </bean>

</beans>        
applicationContext.xml

 

  scrope的其它兩個屬性request、session(基本用不到這兩個屬性)

  一般情況下使用singleton單例的,特殊情況下使用prototype多例的(使用struts時,它創建的action是多例的)

<!-- request 在web環境下,如果scope屬性為request 那么這個對象被創建出來 他的生命周期會與request請求一致-->
<!-- session 同理 ,生命周期與session一致 -->
    <bean name="user" class="com.Gary.bean.User" lazy-init ="true" scope="prototype">
        <!-- 為u_id注入了一個id為2的值 -->
        <property name="u_id" value="2"></property>

    </bean>

 

  3、xml配置-bean標簽-init-method與destroy-method的使用

  在User.java中添加一個userInit()初始化方法與userDestroy()銷毀容器時的方法

    public void userInit() {
        System.out.println("user init");
    }
    
    public void userDestroy() {
        System.out.println("user destroy");
    }

 

    <bean name="user" class="com.Gary.bean.User" lazy-init ="true"  init-method="userInit" destroy-method="userDestroy">
        <!-- 為u_id注入了一個id為2的值 -->
        <property name="u_id" value="2"></property>

    </bean>

 

 

package com.Gary.bean;

public class User {

    private Integer u_id;
    private String u_username;
    private String u_password;
    
    /*public User() {
        System.out.println("默認使用 User 對象空參構造方法");
    }*/
    public Integer getU_id() {
        return u_id;
    }
    public void setU_id(Integer u_id) {
        this.u_id = u_id;
    }
    public String getU_username() {
        return u_username;
    }
    public void setU_username(String u_username) {
        this.u_username = u_username;
    }
    public String getU_password() {
        return u_password;
    }
    public void setU_password(String u_password) {
        this.u_password = u_password;
    }
    @Override
    public String toString() {
        return "User [u_id=" + u_id + ", u_username=" + u_username + ", u_password=" + u_password + "]";
    }
    
    public void userInit() {
        System.out.println("user init");
    }
    
    public void userDestroy() {
        System.out.println("user destroy");
    }
    
    
}
User.java

 

package com.Gary.test;

import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.Gary.bean.User;

public class HelloSpring2 {

    //Spring是一個容器,它將幫助我們管理對象
    @Test
    public void Test2() {
    
        ClassPathXmlApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
        
        //scope="prototype"  多例的   允許創建出多份對象
        
        User u1 = (User) ac.getBean("user");
        User u2 = (User) ac.getBean("user");
        User u3 = (User) ac.getBean("user");
        
        System.out.println(u1==u2);
        
        //關閉容器激活destroy-method方法
        ac.close();
        
    }
    
    
}
HelloSpring2.java

 

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
            xmlns="http://www.springframework.org/schema/beans" 
            xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd ">


<!-- name 是起一個名字,我們可以通過這個name來利用容器獲取對象 
       name 可以使用特殊字符
       name 可以重復 
       我們在實際開發中不推薦將多個對象名字命名為重復的-->
       <!-- id與name作用基本相同,單不推薦使用 不支持特殊字符,不能重復 -->
       
<!-- class:是被管理對象的全包名,spring會通過這個包名來創建對象 -->
<!-- request 在web環境下,如果scope屬性為request 那么這個對象被創建出來 他的生命周期會與request請求一致-->
<!-- session 同理 ,生命周期與session一致 -->
    <bean name="user" class="com.Gary.bean.User" lazy-init ="true"  init-method="userInit" destroy-method="userDestroy">
        <!-- 為u_id注入了一個id為2的值 -->
        <property name="u_id" value="2"></property>

    </bean>

</beans>        
applicationContext.xml

 

  4、xml配置-屬性注入-Set方式注入

  注入一個基本類型  

  創建一個applicationContext_Injection.xml和Test_Injection.java

    <!-- 將user對象交給Spring管理,並注入類型 -->
    <bean name="user" class="com.Gary.bean.User">
        <property name="u_id" value="1"/>
        <property name="u_username" value="Gary"/>
        <property name="u_password" value="123"/>
    </bean>

 

 

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
            xmlns="http://www.springframework.org/schema/beans" 
            xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd ">

    <!-- 將user對象交給Spring管理,並注入類型 -->
    <bean name="user" class="com.Gary.bean.User">
        <property name="u_id" value="1"/>
        <property name="u_username" value="Gary"/>
        <property name="u_password" value="123"/>
    </bean>

</beans>        
applicationContext_Injection.xml

 

package com.Gary.test;

import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.Gary.bean.User;

public class Test_Injection {

    //Spring是一個容器,它將幫助我們管理對象
    @Test
    public void Test2() {
    
        ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext_Injection.xml");
        
        User u1 = (User) ac.getBean("user");

        System.out.println(u1);

        
    }
    
    
}
Test_Injection.java

 

package com.Gary.bean;

public class User {

    private Integer u_id;
    private String u_username;
    private String u_password;
    
    /*public User() {
        System.out.println("默認使用 User 對象空參構造方法");
    }*/
    public Integer getU_id() {
        return u_id;
    }
    public void setU_id(Integer u_id) {
        this.u_id = u_id;
    }
    public String getU_username() {
        return u_username;
    }
    public void setU_username(String u_username) {
        this.u_username = u_username;
    }
    public String getU_password() {
        return u_password;
    }
    public void setU_password(String u_password) {
        this.u_password = u_password;
    }
    @Override
    public String toString() {
        return "User [u_id=" + u_id + ", u_username=" + u_username + ", u_password=" + u_password + "]";
    }
    
    public void userInit() {
        System.out.println("user init");
    }
    
    public void userDestroy() {
        System.out.println("user destroy");
    }
    
    
}
User.java

 

  注入引用類型

  創建一個Pet.java寵物類

package com.Gary.bean;

public class Pet {

    //寵物類型  貓  狗
    private String petType;
    //寵物顏色
    private String color;
    
    @Override
    public String toString() {
        return "Pet [petType=" + petType + ", color=" + color + "]";
    }
    public String getPetType() {
        return petType;
    }
    public void setPetType(String petType) {
        this.petType = petType;
    }
    public String getColor() {
        return color;
    }
    public void setColor(String color) {
        this.color = color;
    }
    
    
    
}
Pet.java

 

  在User.java中加入寵物字段

    private Integer u_id;
    private String u_username;
    private String u_password;
    
    //加入寵物字段
    private Pet u_pet;

 

package com.Gary.bean;

public class User {

    private Integer u_id;
    private String u_username;
    private String u_password;
    
    //加入寵物字段
    private Pet u_pet;
    
    @Override
    public String toString() {
        return "User [u_id=" + u_id + ", u_username=" + u_username + ", u_password=" + u_password + ", u_pet=" + u_pet
                + "]";
    }
    public Pet getU_pet() {
        return u_pet;
    }
    public void setU_pet(Pet u_pet) {
        this.u_pet = u_pet;
    }
    /*public User() {
        System.out.println("默認使用 User 對象空參構造方法");
    }*/
    public Integer getU_id() {
        return u_id;
    }
    public void setU_id(Integer u_id) {
        this.u_id = u_id;
    }
    public String getU_username() {
        return u_username;
    }
    public void setU_username(String u_username) {
        this.u_username = u_username;
    }
    public String getU_password() {
        return u_password;
    }
    public void setU_password(String u_password) {
        this.u_password = u_password;
    }
    
    public void userInit() {
        System.out.println("user init");
    }
    
    public void userDestroy() {
        System.out.println("user destroy");
    }
    
    
}
User.java

 

  <!-- 將user對象交給Spring管理,並注入類型 -->
    <bean name="user" class="com.Gary.bean.User">
        <property name="u_id" value="1"/>
        <property name="u_username" value="Gary"/>
        <property name="u_password" value="123"/>
        <!-- 引用類型的注入 -->
        <property name="u_pet" ref="dog"/>
    </bean> 

    <!-- 注入引用類型 -->
    <bean name="dog" class="com.Gary.bean.Pet">
        <property name="petType" value="二哈"/>
        <property name="color" value="灰白"/>
    </bean>

 

 

package com.Gary.bean;

public class User {

    private Integer u_id;
    private String u_username;
    private String u_password;
    
    //加入寵物字段
    private Pet u_pet;
    
    @Override
    public String toString() {
        return "User [u_id=" + u_id + ", u_username=" + u_username + ", u_password=" + u_password + ", u_pet=" + u_pet
                + "]";
    }
    public Pet getU_pet() {
        return u_pet;
    }
    public void setU_pet(Pet u_pet) {
        this.u_pet = u_pet;
    }
    /*public User() {
        System.out.println("默認使用 User 對象空參構造方法");
    }*/
    public Integer getU_id() {
        return u_id;
    }
    public void setU_id(Integer u_id) {
        this.u_id = u_id;
    }
    public String getU_username() {
        return u_username;
    }
    public void setU_username(String u_username) {
        this.u_username = u_username;
    }
    public String getU_password() {
        return u_password;
    }
    public void setU_password(String u_password) {
        this.u_password = u_password;
    }
    
    public void userInit() {
        System.out.println("user init");
    }
    
    public void userDestroy() {
        System.out.println("user destroy");
    }
    
    
}
User.java

 

package com.Gary.bean;

public class Pet {

    //寵物類型  貓  狗
    private String petType;
    //寵物顏色
    private String color;
    
    @Override
    public String toString() {
        return "Pet [petType=" + petType + ", color=" + color + "]";
    }
    public String getPetType() {
        return petType;
    }
    public void setPetType(String petType) {
        this.petType = petType;
    }
    public String getColor() {
        return color;
    }
    public void setColor(String color) {
        this.color = color;
    }
    
    
    
}
Pet.java

 

package com.Gary.test;

import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.Gary.bean.User;

public class Test_Injection {

    //Spring是一個容器,它將幫助我們管理對象
    @Test
    public void Test2() {
    
        ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext_Injection.xml");
        
        User u1 = (User) ac.getBean("user");

        System.out.println(u1);

        
    }
    
    
}
Test_Injection.java

 

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
            xmlns="http://www.springframework.org/schema/beans" 
            xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd ">

    <!-- 將user對象交給Spring管理,並注入類型 -->
    <bean name="user" class="com.Gary.bean.User">
        <property name="u_id" value="1"/>
        <property name="u_username" value="Gary"/>
        <property name="u_password" value="123"/>
        <!-- 引用類型的注入 -->
        <property name="u_pet" ref="dog"/>
    </bean> 

    <!-- 注入引用類型 -->
    <bean name="dog" class="com.Gary.bean.Pet">
        <property name="petType" value="二哈"/>
        <property name="color" value="灰白"/>
    </bean>

</beans>        
applicationContext.xml

 

  
  5、xml配置-屬性注入-構造函數注入

  在User.java中創建構造函數(一定要帶空參構造方法)

    public User(String u_username, Pet u_pet) {
        System.out.println("方法1  String,Pet");
        this.u_username = u_username;
        this.u_pet = u_pet;
    }

 

package com.Gary.bean;

public class User {

    private Integer u_id;
    private String u_username;
    private String u_password;

    
    public User(String u_username, Pet u_pet) {
        System.out.println("方法1  String,Pet");
        this.u_username = u_username;
        this.u_pet = u_pet;
    }

    //加入寵物字段
    private Pet u_pet;
    
    @Override
    public String toString() {
        return "User [u_id=" + u_id + ", u_username=" + u_username + ", u_password=" + u_password + ", u_pet=" + u_pet
                + "]";
    }
    public Pet getU_pet() {
        return u_pet;
    }
    public void setU_pet(Pet u_pet) {
        this.u_pet = u_pet;
    }
    /*public User() {
        System.out.println("默認使用 User 對象空參構造方法");
    }*/
    public Integer getU_id() {
        return u_id;
    }
    public void setU_id(Integer u_id) {
        this.u_id = u_id;
    }
    public String getU_username() {
        return u_username;
    }
    public void setU_username(String u_username) {
        this.u_username = u_username;
    }
    public String getU_password() {
        return u_password;
    }
    public void setU_password(String u_password) {
        this.u_password = u_password;
    }
    
    public void userInit() {
        System.out.println("user init");
    }
    
    public void userDestroy() {
        System.out.println("user destroy");
    }
    
    
}
User.java

 

  在applicationContext_Injection.xml中使用構造方法注入配置<bean>元素

    <!-- 構造方法注入 -->
    <bean name="user1" class="com.Gary.bean.User">
        <constructor-arg name="u_username" value="Gary2"/>
        <constructor-arg name="u_pet" ref="dog"/>
    </bean>

 

 

package com.Gary.bean;

public class User {

    private Integer u_id;
    private String u_username;
    private String u_password;

    
    public User(String u_username, Pet u_pet) {
        System.out.println("方法1  String,Pet");
        this.u_username = u_username;
        this.u_pet = u_pet;
    }

    //加入寵物字段
    private Pet u_pet;
    
    @Override
    public String toString() {
        return "User [u_id=" + u_id + ", u_username=" + u_username + ", u_password=" + u_password + ", u_pet=" + u_pet
                + "]";
    }
    public Pet getU_pet() {
        return u_pet;
    }
    public void setU_pet(Pet u_pet) {
        this.u_pet = u_pet;
    }
    
    public User() {
        System.out.println("默認使用 User 對象空參構造方法");
    }
    
    public Integer getU_id() {
        return u_id;
    }
    public void setU_id(Integer u_id) {
        this.u_id = u_id;
    }
    public String getU_username() {
        return u_username;
    }
    public void setU_username(String u_username) {
        this.u_username = u_username;
    }
    public String getU_password() {
        return u_password;
    }
    public void setU_password(String u_password) {
        this.u_password = u_password;
    }
    

    
}
User.java

 

package com.Gary.test;

import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.Gary.bean.User;

public class Test_Injection {

    //Spring是一個容器,它將幫助我們管理對象
    @Test
    public void Test2() {
    
        ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext_Injection.xml");
        
        User u1 = (User) ac.getBean("user1");

        System.out.println(u1);

        
    }
    
    
}
Test_Injection.java

 

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
            xmlns="http://www.springframework.org/schema/beans" 
            xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd ">

    <!-- 將user對象交給Spring管理,並注入類型 -->
    <bean name="user" class="com.Gary.bean.User">
        <property name="u_id" value="1"/>
        <property name="u_username" value="Gary"/>
        <property name="u_password" value="123"/>
        <!-- 引用類型的注入 -->
        <property name="u_pet" ref="dog"/>
    </bean> 

    <!-- 注入引用類型 -->
    <bean name="dog" class="com.Gary.bean.Pet">
        <property name="petType" value="二哈"/>
        <property name="color" value="灰白"/>
    </bean>

    <!-- 構造方法注入 -->
    <bean name="user1" class="com.Gary.bean.User">
        <constructor-arg name="u_username" value="Gary2"/>
        <constructor-arg name="u_pet" ref="dog"/>
    </bean>
    
</beans>        
applicationContext_Injection.xml

 

  如果有多個構造方法,可以使用type:指定參數的類型,index :指定參數

 


  6、xml配置-屬性注入-復雜類型注入ArrayList、Set、MapProperties

  在MyCollection.java中定義幾個復雜類型變量

    //數組
    private Object[] array;
    
    //list
    private List list;
    
    //set
    private Set set;
    
    //map
    private Map map;
    
    //properties
    private Properties properties;

 

  <!-- 復雜類型注入 -->
  <bean name="collection" class="com.Gary.bean.MyCollection">
        <!-- array -->
        <property name="array">
            <array>
                <value>123</value>
                <value>abc</value>
            </array>
        </property>
  </bean>

 

 

 

package com.Gary.bean;

import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.Properties;
import java.util.Set;

public class MyCollection {
    //數組
    private Object[] array;
    
    //list
    private List list;
    
    //set
    private Set set;
    
    //map
    private Map map;
    
    //properties
    private Properties properties;

    public Object[] getArray() {
        return array;
    }

    public void setArray(Object[] array) {
        this.array = array;
    }

    public List getList() {
        return list;
    }

    public void setList(List list) {
        this.list = list;
    }

    public Set getSet() {
        return set;
    }

    public void setSet(Set set) {
        this.set = set;
    }

    public Map getMap() {
        return map;
    }

    public void setMap(Map map) {
        this.map = map;
    }

    public Properties getProperties() {
        return properties;
    }

    public void setProperties(Properties properties) {
        this.properties = properties;
    }

    @Override
    public String toString() {
        return "MyCollection [array=" + Arrays.toString(array) + ", list=" + list + ", set=" + set + "]";
    }
    
    
    
}
MyCollection.java

 

package com.Gary.test;

import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.Gary.bean.MyCollection;
import com.Gary.bean.User;

public class Test_Injection {

    //Spring是一個容器,它將幫助我們管理對象
    @Test
    public void Test2() {
    
        ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext_Injection.xml");
        
        MyCollection mc = (MyCollection) ac.getBean("collection");
        
        System.out.println(mc);

        
    }
    
    
}
Test_Injection.java

 

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
            xmlns="http://www.springframework.org/schema/beans" 
            xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd ">

    <!-- 將user對象交給Spring管理,並注入類型 -->
    <bean name="user" class="com.Gary.bean.User">
        <property name="u_id" value="1"/>
        <property name="u_username" value="Gary" />
        <property name="u_password" value="123"/>
        <!-- 引用類型的注入 -->
        <property name="u_pet" ref="dog"/>
    </bean> 

    <!-- 注入引用類型 -->
    <bean name="dog" class="com.Gary.bean.Pet">
        <property name="petType" value="二哈"/>
        <property name="color" value="灰白"/>
    </bean>

    <!-- 構造方法注入 -->
    <bean name="user1" class="com.Gary.bean.User">
        <constructor-arg name="u_username" value="Gary2" type=""/>
        <constructor-arg name="u_pet" ref="dog"/>
    </bean>
    
    <!-- 復雜類型注入 -->
    <bean name="collection" class="com.Gary.bean.MyCollection">
        <!-- array -->
        <property name="array">
            <array>
                <value>123</value>
                <value>abc</value>
            </array>
        </property>
    </bean>
    
    
</beans>        
applicationContext_Injection.xml

 

  同理剩下幾個復雜類型配置

    <!-- 復雜類型注入 -->
    <bean name="collection" class="com.Gary.bean.MyCollection">
        <!-- array -->
        <property name="array">
            <array>
                <value>123</value>
                <value>abc</value>
                <ref bean="dog"/>
            </array>
        </property>
        
    <!-- list -->
     <property name="list">
         <list>
             <value>456</value>
             <value>cba</value>
             <ref bean="user1"/>
         </list>
     </property>
     
     <!--set -->
     <property name="set">
         <set>
             <value>111</value>
             <value>aaa</value>
             <ref bean="user1"/>
         </set>
     </property>
     
    <!-- map -->
    <property name="map">
        <map>
            <entry key="username" value="root"/>
            <entry key="password" value="123"/>
            <entry key-ref="user1" value-ref="dog"/>
        </map>
    </property>
    
    <!-- properties -->
    <property name="prop">
        <props>
            <prop key="name">老李</prop>
            <prop key="age">25</prop>
        </props>
    </property>
            
    </bean>

 

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
            xmlns="http://www.springframework.org/schema/beans" 
            xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd ">

    <!-- 將user對象交給Spring管理,並注入類型 -->
    <bean name="user" class="com.Gary.bean.User">
        <property name="u_id" value="1"/>
        <property name="u_username" value="Gary" />
        <property name="u_password" value="123"/>
        <!-- 引用類型的注入 -->
        <property name="u_pet" ref="dog"/>
    </bean> 

    <!-- 注入引用類型 -->
    <bean name="dog" class="com.Gary.bean.Pet">
        <property name="petType" value="二哈"/>
        <property name="color" value="灰白"/>
    </bean>

    <!-- 構造方法注入 -->
    <bean name="user1" class="com.Gary.bean.User">
        <constructor-arg name="u_username" value="Gary2" type=""/>
        <constructor-arg name="u_pet" ref="dog"/>
    </bean>
    
    <!-- 復雜類型注入 -->
    <bean name="collection" class="com.Gary.bean.MyCollection">
        <!-- array -->
        <property name="array">
            <array>
                <value>123</value>
                <value>abc</value>
                <ref bean="dog"/>
            </array>
        </property>
        
    <!-- list -->
     <property name="list">
         <list>
             <value>456</value>
             <value>cba</value>
             <ref bean="user1"/>
         </list>
    </property>
     
    <!--set -->
    <property name="set">
         <set>
             <value>111</value>
             <value>aaa</value>
             <ref bean="user1"/>
         </set>
    </property>
     
    <!-- map -->
    <property name="map">
        <map>
            <entry key="username" value="root"/>
            <entry key="password" value="123"/>
            <entry key-ref="user1" value-ref="dog"/>
        </map>
    </property>
    
    <!-- properties -->
    <property name="prop">
        <props>
            <prop key="name">老李</prop>
            <prop key="age">25</prop>
        </props>
    </property>
            
    </bean>
    
    

    
    
</beans>        
applicationContext_Injection.xml

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


免責聲明!

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



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