Spring构造注入 构造方法及变量赋值方式

一、构造方法赋值:

首先提供构造方法类UserInfo.java:

public class UserInfo {
	
	//1、普通类型
	public UserInfo(int age, String name) {
		System.out.println(age+" , "+name);
	}
	
	//2、自定义类型
	public UserInfo(Date birth) {
		System.out.println(birth);
	}
	
	//3、数组类型
	public UserInfo(String [] mobiles) {
		for (String mobile : mobiles) {
			System.out.println(mobile);
		}
	}
	
	//4、list类型
	public UserInfo(List<Double> times) {
		for (Double time : times) {
			System.out.println(time);
		}
	}
	
	//5、set类型
	public UserInfo(Set<Date> times) {
		for (Date date : times) {
			System.out.println(date);
		}
	}
	
	//6、map类型
	public UserInfo(Map<String,Integer> peoples) {
		for (Entry<String, Integer> people : peoples.entrySet()) {
			System.out.println(people);
		}
	}
	
	//7、Properties类型
	public UserInfo(Properties properties) {
		System.out.println(properties.getProperty("driver"));
		System.out.println(properties.getProperty("url"));
		System.out.println(properties.getProperty("username"));
		System.out.println(properties.getProperty("password"));
	}
}

此时需要勾选context:
在这里插入图片描述
xml文件配置如下,为构造方法赋值需要使用constructor-arg标签,具体如下:

<!-- 1、普通类型 -->
<bean class="com.jd.vo.UserInfo">
	<constructor-arg name="name" value="Tim"></constructor-arg>
	<constructor-arg type="int" value="20"></constructor-arg>
</bean>

<!-- 2、自定义类型,使用ref标签属性,ref标签的属性值为id或者name -->
<bean id="date" class="java.util.Date"></bean>
<bean class="com.jd.vo.UserInfo">
	<constructor-arg ref="date"></constructor-arg>
</bean>

<!-- 3、数组类型,使用array子标签 -->
<bean class="com.jd.vo.UserInfo">
	<constructor-arg>
		<array>
			<value>120</value>
			<value>110</value>
			<bean class="java.lang.String">
				<constructor-arg value="119"></constructor-arg>
			</bean>
		</array>
	</constructor-arg>
</bean>

<!-- 4、list类型,使用list子标签 -->
<bean class="com.jd.vo.UserInfo">
	<constructor-arg>
		<list>
			<value>111</value>
		</list>
	</constructor-arg>
</bean>

<!-- 5、set类型,使用set子标签 -->
<bean class="com.jd.vo.UserInfo">
	<constructor-arg>
		<set>
			<ref bean="date"/>
			<bean class="java.util.Date"></bean>
		</set>
	</constructor-arg>
</bean>

<!-- 6、map类型,使用map子标签 -->
<bean id="ui" name="u,i,userinfo" class="com.jd.vo.UserInfo">
	<constructor-arg>
		<map>
			<entry key="小明" value="12"></entry>
			<entry key="小刚" value-ref="13"></entry>
		</map>
	</constructor-arg>
</bean>

<!-- 7、Properties类型,使用props子标签 -->
<bean class="com.jd.vo.UserInfo">
	<constructor-arg>
		<props>
			<prop key="driver">com.mysql.jdbc.driver</prop>
			<prop key="url">jdbc:mysql://127.0.0.1:3306/test</prop>
			<prop key="username">root</prop>
			<prop key="password">root</prop>
		</props>
	</constructor-arg>
</bean>

就此,完成赋值。

二、变量赋值:

变量赋值大体与构造方法一样,在配置时可以简便,勾选这三个:
在这里插入图片描述
提供变量的类Student.java为:

public class Student {

	private List<Double> scores;
	
	private Date birth;
	  
	private Map<String,String> map;
	
	private Properties properties;

	public Properties getProperties() {
		return properties;
	}

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

	public List<Double> getScores() {
		return scores;
	}

	public void setScores(List<Double> scores) {
		this.scores = scores;
	}

	public Date getBirth() {
		return birth;
	}

	public void setBirth(Date birth) {
		this.birth = birth;
	}

	public Map<String, String> getMap() {
		return map;
	}

	public void setMap(Map<String, String> map) {
		this.map = map;
	}
	
}

则配置可以简化为:

<bean id="date" class="java.util.Date"></bean>

<util:list id="list">
	<value>110</value>
	<value>120</value>
</util:list>

<util:map id="map">
	<entry key="小米" value="120"></entry>
	<entry key="小刚" value-ref="123"></entry>
</util:map>

<util:properties id="prop">
	<prop key="driver">com.mysql.jdbc.driver</prop>
	<prop key="url">jdbc:mysql://127.0.0.1:3306/test</prop>
	<prop key="username">root</prop>
	<prop key="password">root</prop>
</util:properties>

<bean class="com.jd.vo.Student" 
	p:scores-ref="list" 
	p:birth-ref="date" 
	p:map-ref="map"
	p:properties-ref="prop"></bean>

就此,完成变量赋值,调用相应的get方法即可获得值。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值