Spring Ioc的介绍:Ioc又称控制反转,是一种设计模式;它又称为DI (Dependency Injection),俗称依赖注入:意思是说由框架或容器将被调用的类注入给调用对象,以此来解除调用对象和被调用类之间的依赖关系,它使得Java EE应用中的各组件不需要以硬编码方式贴合在一起。
实现例子:
第一步:建立类包:service,其中由JavaWork类,Zhangsan类,Lisi类,接口Tester;
第二步:首先编写Tester接口:
public interface Tester {
public void test();
}
ZhangSan类和Lisi类实现Tester接口:
public class ZhangSan implements Tester{
public void test() {
// TODO Auto-generated method stub
System.out.println("张三——测试程序");
}
}
public class Lisi implements Tester{
public void test() {
// TODO Auto-generated method stub
System.out.println("李四——测试程序");
}
}
第三步:编写JavaWork类
(1)私有属性:Tester tester
(2)set方法:setTester();
(3)JavaWork具体实现方法:doTest();
具体代码如下所示:
public class JavaWork {
private Tester tester;
public void setTester(Tester tester) {
this.tester = tester;
}
public void doTest(){
tester.test();
}
}
第四步:配置文件:beans.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.xsd">
<bean id="HelloWorld" class="com.java1234.test.HelloWorld"></bean>
<bean id="zhangsan" class="com.java1234.service.ZhangSan"></bean>
<bean id="Lisi" class="com.java1234.service.Lisi"></bean>
<bean id="javaWork" class="com.java1234.service.JavaWork">
<property name="tester" ref="zhangsan"></property>
</bean>
</beans>
第四步:编写测试类,在test包中
具体代码如下所示:
public class Test2 {
public static void main(String[] args) {
ApplicationContext ac=new ClassPathXmlApplicationContext("beans.xml");
JavaWork javaWork=(JavaWork) ac.getBean("javaWork");
javaWork.doTest();
}
}
第五步:运行Test2,控制台信息出现 张三——测试程序。注:若换成李四,则在配置文件中修改就好
具体说明:
JavaWork中的doTest方法中的tester的值是由配置文件中<property name="tester" ref="其他bean的id">来注入,说明tester是由spring来管理的,由spring来注入,不需要在JavaWork中新建是个Tester的具体实例,大大降低JavaWork类与ZahngSan类、Lisi类依赖,即是解耦。