Spring装配对象方法-构造方法

Spring装配对象方法

Spring通过XML使用构造方法为对象装配属性。

通过参数顺序

通过参数类型

通过参数顺序和类型

beans.xml

xml 复制代码
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:p="http://www.springframework.org/schema/p"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
           http://www.springframework.org/schema/beans/spring-beans.xsd">
    <bean id="userinfo" class="com.hk.hr.UserInfo">
        <constructor-arg index="0" type="java.lang.String">
            <value>Java</value>
        </constructor-arg>
        <constructor-arg index="1" type="java.lang.String">
            <value>Oracle</value>
        </constructor-arg>
        <constructor-arg index="2" type="java.lang.Integer">
            <value>30</value>
        </constructor-arg>
        <property name="id" value="user"/>
        <property name="name" value="java"/>
    </bean>
    <bean name="orginfo" class="com.hk.hr.OrgInfo" p:name="oracle" p:mgr-ref="userinfo">
    </bean>
    <bean name="orginfo2" class="com.hk.hr.OrgInfo" p:name="oracle" p:mgr-ref="userinfo">
        <property name="users">
            <list>
                <value>Java</value>
                <value>Python</value>
                <ref bean="userinfo"/>
            </list>
        </property>
        <property name="roles">
            <list>
                <value>管理员</value>
                <value>浏览者</value>
                <ref bean="userinfo"/>
            </list>
        </property>
        <property name="maps">
            <map>
                <entry key="key01" value="Java"/>
                <entry key="key02" value="Android"/>
            </map>
        </property>
        <property name="prop">
            <props>
                <prop key="key01">Value1</prop>
                <prop key="key02">Value2</prop>
            </props>
        </property>
    </bean>
</beans>

UserInfo.java

java 复制代码
package com.hk.hr;

public class UserInfo {
    private String id = null;
    private String name = null;
    private Integer age = null;

    /**
     public UserInfo()
     {
     System.out.println("UserInfo()");
     }
     */

    public UserInfo(String id,String name)
    {
        this.id = id;
        this.name = name;
        System.out.println("UserInfo1:id="+id+",name="+name);
    }

    public UserInfo(String id,String name,Integer age)
    {
        this.id = id;
        this.name = name;
        this.age = age;
        System.out.println("UserInfo2:id="+id+",name="+name+",age="+age);
    }

    public UserInfo(String id,String name,String age)
    {
        this.id = id;
        this.name = name;
        this.age = Integer.parseInt(age);
        System.out.println("UserInfo3:id="+id+",name="+name+",age="+age);
    }

    public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
}

Main.java

java 复制代码
package com.hk.hr;

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

public class Main {
    public static void main(String[] args)
    {
        ApplicationContext ac = new ClassPathXmlApplicationContext("beans.xml");
        UserInfo ui = (UserInfo)ac.getBean("userinfo");
        System.out.println("ui2="+ui);
        OrgInfo oi = (OrgInfo)ac.getBean("orginfo");
        System.out.println("oi="+oi);
        OrgInfo oi2 = (OrgInfo)ac.getBean("orginfo2");
        System.out.println("oi2="+oi2);
    }
}



为了避免Spring调用构造方法出现混淆,使用参数顺序和参数类型限定构造方法

相关推荐
是小蟹呀^2 小时前
Java 内部类详解:成员内部类、静态内部类、局部内部类与匿名内部类
java·内部类
于先生吖2 小时前
国际语言适配拼车系统 JAVA 后端源码 + 同城顺风车功能全解析
java·开发语言
czlczl200209252 小时前
KRaft原理
java·zookeeper
紫丁香2 小时前
高并发面试4
后端·面试·高并发
毕设源码-朱学姐3 小时前
【开题答辩全过程】以 基于SSM的宜佳家具电商平台为例,包含答辩的问题和答案
java
精神小伙就是猛3 小时前
使用go-zero快速搭建一个微服务(一)
开发语言·后端·微服务·golang
丘比特惩罚陆3 小时前
【无标题】
后端·gitee
客卿1233 小时前
最小生成树(贪心)--构造回文串(字符串 + 回文判断 + 构造)
java·开发语言·算法
天启HTTP3 小时前
多线程环境下,动态IP怎么分配最合理
java·服务器·网络