Spring构造方法实例化对象总结

一、无参构造方法

package com.jd.vo;

public class Student {

    public Student() {
        System.out.println("Student");
    }

}

默认情况下,使用无参构造函数实例化对象。

<bean class="com.jd.vo.Student"></bean>

二、参数为基本数据类型或String类型

package com.jd.vo;

public class Student {

     public Student(int age,String name) {
        System.out.println(age+","+name);
    }

}

使用constructor-arg子标签配置一个参数列表中的参数值,通过value赋值,通过name,index,type区分参数。

<bean class="com.jd.vo.Student">
        <constructor-arg name="age" value="12"></constructor-arg>
        <constructor-arg name="name" value="Jack"></constructor-arg>
</bean>

三、参数为引用类型

package com.jd.vo;

public class Student {

  public Student(Date birth){
        System.out.println(birth);
    }

}

使用constructor-arg子标签配置一个参数列表中的参数值,通过ref赋值。

<bean name="date" class="java.util.Date"></bean>
<bean class="com.jd.vo.Student">
        <constructor-arg ref="date"></constructor-arg>
</bean>-->

四、参数为List集合

package com.jd.vo;

public class Student {

  public Student(List<String> names){
        for (String name:names) {
            System.out.println(name);
        }
    }
}

使用constructor-arg子标签下的list标签配置集合内参数值,若参数为基本数据类型或String类型,则可用value赋值;若参数为引用类型,则可用ref赋值;又因为基本数据类型或String类型可看作引用类型,则亦可类比。

<bean name="n" class="java.lang.String">
        <constructor-arg value="Mike"></constructor-arg>
</bean>
<bean class="com.jd.vo.Student">
        <constructor-arg>
            <list>
                <value>Tom</value>
                <bean class="java.lang.String">
                    <constructor-arg value="Jimmy"></constructor-arg>
                </bean>
                <ref bean="n"></ref>
            </list>
        </constructor-arg>
</bean>

五、参数为数组

package com.jd.vo;

public class Student {

  public Student(int [] scores){
        for (int score:scores) {
            System.out.println(score);
        }
    }
}

使用constructor-arg子标签下的array标签配置数组内参数值,若参数为基本数据类型或String类型,则可用value赋值;若参数为引用类型,则可用ref赋值;又因为基本数据类型或String类型可看作引用类型,则亦可类比。

<bean name="s" class="java.lang.Integer">
        <constructor-arg value="92"></constructor-arg>
</bean>
<bean class="com.jd.vo.Student">
        <constructor-arg>
            <array>
                <value>88</value>
                <bean class="java.lang.Integer">
                    <constructor-arg value="95"></constructor-arg>
                </bean>
                <ref bean="s"></ref>
            </array>
        </constructor-arg>
</bean>

六、参数为Set集合

package com.jd.vo;

public class Student {

	public Student(Set<Integer> mobile){
        for (int mob:mobile) {
            System.out.println(mob);
        }
    }
 
}

使用constructor-arg子标签下的set标签配置数组内参数值,若参数为基本数据类型或String类型,则可用value赋值;若参数为引用类型,则可用ref赋值;又因为基本数据类型或String类型可看作引用类型,则亦可类比。

<bean name="m" class="java.lang.Integer">
        <constructor-arg value="112"></constructor-arg>
</bean>
<bean class="com.jd.vo.Student">
        <constructor-arg>
            <set>
                <value>110</value>
                <bean class="java.lang.Integer">
                    <constructor-arg value="119"></constructor-arg>
                </bean>
                <ref bean="m"></ref>
            </set>
        </constructor-arg>
</bean>

七、参数为Map集合

package com.jd.vo;

public class Student {

	 public Student(Map<String,String> stu){
        Set<String> set = stu.keySet();
        for (String key:set) {
            System.out.println(key+","+stu.get(key));
        }
    }
 
}

使用constructor-arg子标签下的map标签配置数组内参数值,通过entry标签给key和value赋值;若参数为引用类型,则可用key-ref给key赋值,value-ref给value赋值。

<bean name="k" class="java.lang.String">
        <constructor-arg value="Marry"></constructor-arg>
</bean>
<bean name="v" class="java.lang.String">
        <constructor-arg value="15"></constructor-arg>
</bean>
<bean class="com.jd.vo.Student">
        <constructor-arg>
            <map>
                <entry key="Kate" value="12"></entry>
                <entry key-ref="k" value-ref="v"></entry>
            </map>
        </constructor-arg>
</bean>

九、参数为Properties类型

package com.jd.vo;

public class Student {

	 public Student(Properties properties){
        String name = properties.getProperty("name");
        String age = properties.getProperty("age");
        System.out.println(name+","+age);
    }
 
}

使用constructor-arg子标签下的props标签配置数组内参数值,通过prop标签给指定的key赋值。

<bean class="com.jd.vo.Student">
        <constructor-arg>
            <props>
                <prop key="name">Nancy</prop>
                <prop key="age">23</prop>
            </props>
        </constructor-arg>
</bean>

若其中一key的值为数组类型或引用,则使用array标签或ref标签类比赋值。

<bean id="sc" class="java.lang.Integer">
        <constructor-arg value="103"></constructor-arg>
</bean>
<bean class="com.jd.vo.Student">
        <property name="name" value="Alex"></property>
        <property name="scores">
            <array>
                <value>125</value>
                <bean class="java.lang.Integer">
                    <constructor-arg value="114"></constructor-arg>
                </bean>
                <ref bean="sc"></ref>
            </array>
        </property>
</bean>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值