IOC通俗的講就是面向介面編程。
1,定義兩個介面,類如下:
package com.svse.spring.ioc;
//墨水類型
public interface Ink {
public String getColor();
}
//紙張類型
package com.svse.spring.ioc;
public interface Paper {
public String getSize();
}
他們的具體實作類別如下:
//藍色墨水
package com.svse.spring.ioc;
public class BlueInk implements Ink {
public String getColor() {
return "藍色";
}
}
//紅色墨水
package com.svse.spring.ioc;
public class RedInk implements Ink {
public String getColor() {
return "紅色";
}
}
//A4紙
package com.svse.spring.ioc;
public class A4 implements Paper {
public String getSize() {
return "a4";
}
}
//A5紙
package com.svse.spring.ioc;
public class A5 implements Paper {
public String getSize() {
return "a5";
}
}
//A6紙
package com.svse.spring.ioc;
public class A6 implements Paper {
public String getSize() {
return "a6";
}
}
2,用什麼樣的墨水和紙張列印類:
package com.svse.spring.ioc;
public class Printer {
private Ink ink = null;
private Paper paper = null;
public Ink getInk() {
return ink;
}
public void setInk(Ink ink) {
this.ink = ink;
}
public Paper getPaper() {
return paper;
}
public void setPaper(Paper paper) {
this.paper = paper;
}
public void print(String content)
{
System.out.println("[" + ink.getColor() +"]" +"["+ paper.getSize() +"]" + content);
}
}
3,在所建工程中添加spring-core.jar、 spring-beans.jar 、spring-context.jar包
在applicationContext.xml檔案中對上面的具體實作類別進行裝配:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<!-- 定義Paper -->
<bean id="a4" class="com.svse.spring.ioc.A4"></bean>
<bean id="a5" class="com.svse.spring.ioc.A5"></bean>
<bean id="a6" class="com.svse.spring.ioc.A6"></bean>
<!-- 定義墨盒 -->
<bean id="redInk" class="com.svse.spring.ioc.RedInk"></bean>
<bean id="blueInk" class="com.svse.spring.ioc.BlueInk"></bean>
<!-- 定義印表機(組裝印表機) -->
<bean id="printer" class="com.svse.spring.ioc.Printer">
<property name="ink" ref="blueInk"></property>
<property name="paper" ref="a6" ></property>
</bean>
</beans>
4,測試ioc
package com.svse.spring.ioc;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class IOCMain {
/**
* @測試
*/
public static void main(String[] args) {
ApplicationContext context =
new ClassPathXmlApplicationContext("applicationContext.xml");
Printer printer = (Printer)context.getBean("printer");
printer.print("Welcome 2 spring framework.");
}
}