1. 程式人生 > >Spring實現控制反轉(IOC)的三種方式(一)——屬性注入

Spring實現控制反轉(IOC)的三種方式(一)——屬性注入

這篇文章,來理解一下Spring IOC的屬性注入(set注入)方法。還是用上一篇的程式設計師寫程式碼的例子。

package com.spring.demo02.entity;

public class Programmer {

	private String name;
	private String sex;

	// 在這裡定義要依賴的computer屬性,加上set方法
	private Computer computer;

	public String getName() {
		return name;
	}

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

	public String getSex() {
		return sex;
	}

	public void setSex(String sex) {
		this.sex = sex;
	}

	public Computer getComputer() {
		return computer;
	}

	/**
	 * 加上Setter方法
	 * */
	public void setComputer(Computer computer) {
		this.computer = computer;
	}

}

package com.spring.demo02.entity;
public class Computer {
	
	private String brand;
	private String color;
	private String size;
	
	public void coding() {
		System.out.println("Computer is coding!!!");
	}

	public String getBrand() {
		return brand;
	}

	public void setBrand(String brand) {
		this.brand = brand;
	}

	public String getColor() {
		return color;
	}

	public void setColor(String color) {
		this.color = color;
	}

	public String getSize() {
		return size;
	}

	public void setSize(String size) {
		this.size = size;
	}
	

}

看上面的程式碼,可以發現,Programmer類裡面,有3個屬性,name,sex,computer,並且都有對應的getter、setter方法;Computer類裡面也有三個屬性,分別是品牌、顏色、尺寸,也都有對應的getter、setter方法。這只是第一步,在類裡面宣告屬性並且實現set方法。

接下來,要寫一個spring的xml配置檔案,如下:

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
    
  <bean id="programmer" class="com.spring.demo2.entity.Programmer">
  	<property name="name" value="小李"></property>
  	<property name="sex" value="男"></property>
  	<property name="computer" ref="computer"></property>
  </bean>
  
  <bean id="computer" class="com.spring.demo2.entity.Computer">
  	<property name="brand" value="hp"></property>
  	<property name="color" value="黑"></property>
  	<property name="size" value="14"></property>
  </bean>
  
</beans> 
解讀一下這個xml檔案:

1.宣告一個bean,可以理解為例項化了一個物件。那這裡例項化了兩個物件(programmer和computer),各個屬性都已經賦值上去。(不知道這樣理解對不對)

2.id為programmer的bean,其實就是Programmer類;通過給property賦值,Spring就會通過Programmer類的各個屬性的set方法,逐一給Programmer的屬性賦值。

3.在programmer裡面,有一個屬性是computer的,可以看到它屬性值是 ref="computer",這就說明computer這個屬性是個引用,這裡ref後面的值其實就是指向另一個bean的id值,所以這裡引用的是id為computer的bean。

以上,就是屬性注入了。關鍵的是在類裡面宣告屬性,寫set方法,然後在xml裡面配置bean和property的值。

如有錯漏,還望指正,共同學習!!!