Spring Inversion Of Control (IOC)依赖注入举例

时间:2012-01-21 浏览:9次 来源:本站
Spring Inversion Of Control (IOC)依赖注入举例(图)

实际的开发中,我们尽量降低对象间的依赖关系即耦合度。比如代码中SETTER,GETTER在另一个对象里进行设置,设置的过程始终在代码周期中完成,耦合度高,如有改动需要重新编译,IOC就是用来进行属性设置代码脱离降偶的解决方法.

Spring框架中提供了一个强有力的容器组件管理功能,容器本身基于IOC(控制反转)和DI(依赖注入)的实现方式,下面来举例说明ICO在SPRING中的具体使用方法:

创建一个接口:

Employee.java

---

package cn.txdnet.spring.ioc.demo;

public interface Employee {

        public String showDetail();

}

创建一个接口的实现类:

PartimeEmployee.java

----

package cn.txdnet.spring.ioc.demo;

public class PartimeEmployee implements Employee {

        @Override

        public String showDetail() {

                return "I Am A Part Time Employee";

        }

}

创建另一个实现类:

FulltimeEmployee.java

----

package cn.txdnet.spring.ioc.demo;

public class FulltimeEmployee implements Employee {

        @Override

        public String showDetail() {

                return "I Am Full Time Employee";

        }

}

创建服务提供类:

EmployeeService.java

---

package cn.txdnet.spring.ioc.demo;

public class EmployeeService {

        Employee employee;

        public void setEmployee(Employee employee) {

                this.employee = employee;

        }

        public String printDetail() {

                return employee.showDetail();

        }

}

配置BEAN.XML文件,让容器进行注入相应的实现类

bean.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="fulltimeEmployee" class="cn.txdnet.spring.ioc.demo.FulltimeEmployee"></bean>

<bean id="partimeEmployee" class="cn.txdnet.spring.ioc.demo.PartimeEmployee"></bean>

<bean id="employeeService" class="cn.txdnet.spring.ioc.demo.EmployeeService">

<property name="employee">

<ref local="partimeEmployee"/>

</property>

</bean> 

</beans>

现在写一个主程序类来调用服务方法:

RunDemoMain.java

---

package  cn.txdnet.spring.ioc.demo;

import org.springframework.context.ApplicationContext;

import org.springframework.context.support.ClassPathXmlApplicationContext;

public class RunDemoMain {

        public static void main(String[] args) {

                ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");

                EmployeeService employeeService = (EmployeeService) context.getBean("employeeService");

                System.out.println(employeeService.printDetail());

        }

}

现在 ,你只需更改bean.xml里的<ref local="partimeEmployee"/>就可以更改服务提供的方法具体实现了, 达到服务和具体实现的分离,配置优于实现,易于管理维护。

相关阅读:http://www.txdnet.cn/ls/11/0/1.xhtm

∮推荐文章

↑阅读排行