Spring實現控制反轉(IOC)的三種方式(一)——屬性注入
阿新 • • 發佈:2019-02-10
這篇文章,來理解一下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檔案:<?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>
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的值。
如有錯漏,還望指正,共同學習!!!