Spring反转容器IOC
2008-05-16 13:05
232 查看
IOC中有句著名的格言"don`t call me,i'll call you".
我们传统产生实现的方式需要用new运算符产生类实例.这样类与类之间的偶合性就比较强,不易于软件在将来的升级和维护.反转容器可以消除这样的依赖.
举个简单的例子:
Human.java
package com.wish.IOC;
public interface Human {
public void eat();
public void walk();
}
Chinese.java
package com.wish.IOC;
public class Chinese implements Human{
public void eat() {
System.out.println("中国以大米为主食");
}
public void walk() {
System.out.println("中国人以自行车为交通工具");
}
}
American.java
package com.wish.IOC;
public class American implements Human{
public void eat() {
System.out.println("美国人以面包为主食");
}
public void walk() {
System.out.println("美国人以汽车为主要交通工具,所以四肢有退化现象");
}
}
bean.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
"http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id="chinese" class="com.wish.IOC.Chinese"></bean>
<bean id="american" class="com.wish.IOC.American"></bean></beans>
下面给出测试
IOCTest.java
package com.wish.IOC;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext;
public class IOCTest {
public static void main(String[] args) {
ApplicationContext ctx = new FileSystemXmlApplicationContext("/config/bean.xml");
Chinese chinese = (Chinese) ctx.getBean("chinese");
American american = (American) ctx.getBean("american");
chinese.eat();
chinese.walk();
american.eat();
american.walk();
}
}
我们传统产生实现的方式需要用new运算符产生类实例.这样类与类之间的偶合性就比较强,不易于软件在将来的升级和维护.反转容器可以消除这样的依赖.
举个简单的例子:
Human.java
package com.wish.IOC;
public interface Human {
public void eat();
public void walk();
}
Chinese.java
package com.wish.IOC;
public class Chinese implements Human{
public void eat() {
System.out.println("中国以大米为主食");
}
public void walk() {
System.out.println("中国人以自行车为交通工具");
}
}
American.java
package com.wish.IOC;
public class American implements Human{
public void eat() {
System.out.println("美国人以面包为主食");
}
public void walk() {
System.out.println("美国人以汽车为主要交通工具,所以四肢有退化现象");
}
}
bean.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
"http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id="chinese" class="com.wish.IOC.Chinese"></bean>
<bean id="american" class="com.wish.IOC.American"></bean></beans>
下面给出测试
IOCTest.java
package com.wish.IOC;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext;
public class IOCTest {
public static void main(String[] args) {
ApplicationContext ctx = new FileSystemXmlApplicationContext("/config/bean.xml");
Chinese chinese = (Chinese) ctx.getBean("chinese");
American american = (American) ctx.getBean("american");
chinese.eat();
chinese.walk();
american.eat();
american.walk();
}
}
相关文章推荐
- 为什么说Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架?
- 理解Java Spring核心功能之一:控制反转容器(IOC Container)
- Spring中的IoC(控制反转)容器初探
- spring IOC容器:控制反转
- Spring容器的控制反转(IOC)和依赖注入(DI)
- 依赖注入(DI)和控制反转(IOC)的详细讲解 spring容器(spring注解实现,而不是xml配置文件)
- Spring 控制反转(IoC)容器
- Spring_01 spring容器、控制反转(IOC)、依赖注入(DI)
- Spring环境搭建,IoC容器初体验~
- Spring 控制反转IOC,依赖注入DI
- spring源码学习之路---IOC容器初始化要义之bean定义载入(五)
- Spring核心技术(一)——IoC容器和Bean简介
- Spring 框架简介(Spring AOP 和 IOC 容器入门)
- 学习Spring ioc 容器
- spring源码解析(二)IOC容器
- Spring IoC容器知识点梳理
- SpringIOC容器-创建对象
- springIOC容器基本用法
- spring控制反转(IOC)的原理
- spring源码研究之IoC容器在web容器中初始化过程