Spring04:DI(依赖注入)

概念

DI依赖注入(Dependency Injection,DI)就是IOC的一个实现,spring通过DI向javaBean(java类)注入属性

依赖:指javaBean的对象创建依赖于Spring容器

注入:指javaBean对象依赖的资源

构造器注入

public class User{
    
    private User(int id,String name){
        this.id = id;
        this.name = name;
    }
    
    private int id;
    private String name;
}
       
     
   
               
     
     
             
     

 

setter注入 【重点】

public class Student {
	
	private String name;
	private Address address;
	private String[] books;
	private Listhobbys;
	private Mapcard;
	private Setgames;
	private String wife;
	private Properties info;
	public String getNameString() {
		return nameString;
	}
	public void setNameString(String nameString) {
		this.nameString = nameString;
	}
	public Address getAddress() {
		return address;
	}
	public void setAddress(Address address) {
		this.address = address;
	}
	public String[] getBooks() {
		return books;
	}
	public void setBooks(String[] books) {
		this.books = books;
	}
	public ListgetHobbys() {
		return hobbys;
	}
	public void setHobbys(Listhobbys) {
		this.hobbys = hobbys;
	}
	public MapgetCard() {
		return card;
	}
	public void setCard(Mapcard) {
		this.card = card;
	}
	public SetgetGames() {
		return games;
	}
	public void setGames(Setgames) {
		this.games = games;
	}
	public String getWife() {
		return wife;
	}
	public void setWife(String wife) {
		this.wife = wife;
	}
	public Properties getInfo() {
		return info;
	}
	public void setInfo(Properties info) {
		this.info = info;
	}
	@Override
	public String toString() {
		return "Student [nameString=" + nameString + ", address=" + address + ", books=" + Arrays.toString(books)
				+ ", hobbys=" + hobbys + ", card=" + card + ", games=" + games + ", wife=" + wife + ", info=" + info
				+ "]";
	}
		
}
xml配置注入

	

	
	
		
				
		
				
			
				book1
				book2
				book3
				book4
			
		
		
				
			
				吃
				喝
				玩
				乐
			
		
		
				
			
				
				
				
				
			
		
		
				
			
				求生之路
				文明
				欧陆风云
			
		
		
				
			
		
		
				
			
				INDIA
				Pakistan
				USA
			

		
	
测试
class Test {

	@org.junit.jupiter.api.Test
	void test() {
		
		ApplicationContext aContext = new ClassPathXmlApplicationContext("beans.xml");
		Student student = aContext.getBean("student",Student.class);
		System.out.println(student);
	}

}
结果

Spring DI(依赖注入)_Spring DI

p命名和c命名注入

1.p标签注入

 导入约束 : xmlns:p="http://www.springframework.org/schema/p"

2.c标签注入

 导入约束 : xmlns:p="http://www.springframework.org/schema/p"

bean的作用域

在spring中声明一个bean时,你可以指定它的作用域(使用scope属性)

作用域描述
singleton在spring IOC容器中只存在一个Bean实例,Bean以单例的方式存在,默认
prototype每次从容器中调用Bean时,都会返回一个新的实例,每次调用getBean()时
request每一次HTTP请求都会创建一个新的Bean,适用于Web
session同一个HTTP请求共享一个Bean,不同Session使用不同的Bean,适用有Web
global-session一般用于Portlet应用环境,该作用域仅适用于Webt
singleton作用域(单例模式)
    	
    	

Singleton测试

Spring DI(依赖注入)_Spring DI_02

prototype(原型模式)
    	
    	

prototype测试

Spring DI(依赖注入)_Spring DI_03

Spring Bean 生命周期

Spring DI(依赖注入)_Spring DI_04

更加详细的

Spring DI(依赖注入)_Spring DI_05

Spring DI(依赖注入)_Spring DI_06