spring之属性注入

综述:属性注入,意思就是先通过类的无参构造函数构造一个对象,然后通过调用setter方法来设置对象的属性。


所以,使用属性注入时,有两个前提。

(一):类有无参构造器。

(二):类的属性有setter方法。


但是我们知道,类的属性有很多种类型,比如:基本类型(int、double)、string、集合(list、map)、其他对象的引用。


接下来挨个看看这些类型在spring的xml文件中如何配置。


1、属性注入-------基本类型注入。

package com.cmm;

public class Person {
	private int age;
	private String name;
	private double high;
	
	public Person(){};
	
	public void setAge(int age) {
		this.age = age;
	}
	public void setHigh(double high) {
		this.high = high;
	}
	public void setName(String name) {
		this.name = name;
	}

	@Override
	public String toString() {
		return "Person [age=" + age + ", name=" + name + ", high=" + high + "]";
	}
}


定义一个类,符合上述两个条件,接下来配置Bean。



	
	
		
		
		
		
		
	


查看测试结果:

package com.cmm;

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

public class Main {
	public static void main(String[] args) {
		ApplicationContext context = new ClassPathXmlApplicationContext("AppCtx.xml");
		Person personA = (Person)context.getBean("personA");
		System.out.println(personA);
	}
}
spring之属性注入_第1张图片

value表示值类型。


2、属性注入-------集合类型注入。

首先,定义一个辅助类。

package com.cmm;

public class Phone {
	private String brand;
	private int price;
	public Phone() {
	}
	public void setBrand(String brand) {
		this.brand = brand;
	}
	public void setPrice(int price) {
		this.price = price;
	}
	@Override
	public String toString() {
		return "Phone [brand=" + brand + ", price=" + price + "]";
	}
	
}

然后定义Person。

package com.cmm;

import java.util.List;
import java.util.Map;

public class Person {
	private int age;
	private String name;
	private double high;
	private List phones;

	
	public Person(){};
	
	public void setAge(int age) {
		this.age = age;
	}
	public void setHigh(double high) {
		this.high = high;
	}
	public void setName(String name) {
		this.name = name;
	}
	public void setPhones(List phones) {
		this.phones = phones;
	}

	@Override
	public String toString() {
		return "Person [age=" + age + ", name=" + name + ", high=" + high + ", phones=" + phones + "]";
	}
	
}

可以看出,添加了一个list属性。

配置如下:



	
	
	
		
		
	
	
		
		
	
	
	
	
		
		
		
		
		
		
		
			
				
				
				
			
		
	


测试结果为:



在看看map类型的属性注入:

person类添加属性map

package com.cmm;

import java.util.List;
import java.util.Map;

public class Person {
	private int age;
	private String name;
	private double high;
	private List phones;
	private Mapaddress;
	
	public Person(){};
	
	public void setAge(int age) {
		this.age = age;
	}
	public void setHigh(double high) {
		this.high = high;
	}
	public void setName(String name) {
		this.name = name;
	}
	public void setPhones(List phones) {
		this.phones = phones;
	}
	public void setAddress(Map address) {
		this.address = address;
	}

	@Override
	public String toString() {
		return "Person [age=" + age + ", name=" + name + ", high=" + high + ", phones=" + phones + ", address="
				+ address + "]";
	}	
}


然后配置xml



	
	
	
		
		
	
	
		
		
	
	
	
	
		
		
		
		
		
		
		
			
				
				
				
			
		
		
		
			
				
				
				
			
		
	


3、 属性注入-------引用类型注入。

重写person类。

package com.cmm;

public class Person {
	private Phone phone;
	public void setPhone(Phone phone) {
		this.phone = phone;
	}
	public Person() {
		// TODO Auto-generated constructor stub
	}
	@Override
	public String toString() {
		return "Person [phone=" + phone + "]";
	}
	
}


配置xml



	
	
	
		
		
	
	
	
		
	
	
	


Bean的配置不分先后,这与对象的定义不一样。



	
	

	
	
		
	
	
	
	
		
		
	
	

这里使用的set方法,对属性进行注入。配置起来还是有点麻烦。下一节,看看使用p空间进行属性注入。这个比较方便。






你可能感兴趣的:(Spring)