Spring参数注入的几种方法

对代码不满足,是任何真正有天才的程序员的根本特征。
1. 基本类型值
2. 注入bean;
3. 内部bean; 在property内部加个bean
4. Null值
5. 级联属性
6. 集合类型属性

基本类型值注入:在bean中加入property 通过value直接赋值
  <bean id="people1" class="com.java1234.entity.People">
		<property name="id" value="1"></property>
		<property name="name" value="张三"></property>
		<property name="age" value="11"></property>
	</bean>

但是你的实体类People中必须有这些属性名 id,name,age;并且有set方法

注入Bean类型:在bean中加入将一个类作为属性 通过property的ref依赖另一个bean(前提这个bean是有值的),并且在类中也要申明这个类属性属性和他的set方法,一般set的方法是通过xml自动注入的

 <bean id="people2" class="com.java1234.entity.People">
		<property name="id" value="2"></property>
		<property name="name" value="张三"></property>
		<property name="age" value="11"></property>
		<property name="dog" ref="dog"></property>
	</bean>
	<bean id="dog" class="com.java1234.entity.Dog">
	    <property name="name" value="jack"></property>
	</bean>

	public class People {
	private int id;
	private String name;
	private int age;
	private Dog dog;
	public void setDog(Dog dog) {
		this.dog = dog;
	}
	}
package com.java1234.entity;

public class Dog {
    private String name;

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}
}
	

内部bean:在你的bean中property中加入一个bean类似内部类 跟外部申明一样class都要申明清楚

    <bean id="people3" class="com.java1234.entity.People">
		<property name="id" value="3"></property>
		<property name="name" value="张三"></property>
		<property name="age" value="11"></property>
		<property name="dog">
		   <bean class="com.java1234.entity.Dog">
	   			 <property name="name" value="Tom"></property>
		  </bean>
		</property>
	</bean>

Null值:仅限申明null值 同内部bean一样 在property内部用null标签

   <bean id="people4" class="com.java1234.entity.People">
	<property name="id" value="4"></property>
	<property name="name" value="张三"></property>
	<property name="age" value="11"></property>
	<property name="dog">
	    <null></null>
	</property>
  </bean>

级联属性:在property name的输入中类似对象成员域的调用dog.name

     <bean id="people5" class="com.java1234.entity.People">
		<property name="id" value="1"></property>
		<property name="name" value="张三"></property>
		<property name="age" value="11"></property>
		<property name="dog.name" value="Jack2"></property>
	</bean>	
</beans>

这里有3个需要注意的地方:1.在people类中的dog属性需要实例化new Dog();
2.同时在people类中要有dog的get方法 否则会报错

3.在输出dog名字时候 要dog.getName;
配置文件中配置bean的属性时,property标签不仅能直接配置该bean对应的类自身的属性,而且还可以直接配置该类的属性对象向的属性,即级联属性。这里的级联属性被赋值的前提是级联属性所属的对象属性已经被属性注入或构造器注入赋值,因为一般没有注入,所以要new出空对象,让xml注入属性对象的属性,否则会报异常。

<bean id="people5" class="com.java1234.entity.People">
<property name="id" value="1"></property>
<property name="name" value="张三"></property>
<property name="age" value="11"></property>
<property name="dog.name" value="Jack2"></property>
</bean>
    package com.java1234.entity;

public class People {
	private int id;
	private String name;
	private int age;
	private Dog dog=new Dog();//级联属性需要实例化dog
	
	public void setDog(Dog dog) {
		this.dog = dog;
	}

	public Dog getDog() {
		return dog;
	}

	public void setId(int id) {
		this.id = id;
	}
	
	public void setName(String name) {
		this.name = name;
	}
	
	public void setAge(int age) {
		this.age = age;
	}

	@Override
	public String toString() {
		return "People [id=" + id + ", name=" + name + ", age=" + age
				+ ", dog=" + dog.getName()+ "]";
	}

}

集合类型属性:property中加入list set props等子标签以 value子标签赋值 分别对应People类中ArrayList HashSet Properties等类型属性 还有HashMap对应map.entry.key(value子标签赋值)和map.entry.value键值对

 <property name="hobbies">
			<list>
				<value>唱歌</value>
				<value>跳舞</value>
			</list>
		</property>
		<property name="loves">
			<set>
				<value>唱歌2</value>
				<value>跳舞2</value>
			</set>
		</property>
		<property name="works">
			<map>
				<entry>
					<key><value>上午</value></key>
					<value>写代码</value>
				</entry>
				<entry>
					<key><value>下午</value></key>
					<value>测试代码</value>
				</entry>
			</map>
		</property>
		<property name="addresses">
			<props>
				<prop key="address1">aaaaa</prop>
				<prop key="address2">bbbbb</prop>
			</props>
		</property>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

二进制怪兽

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值