Spring中的IOC示例
Spring中的IOC示例
工程的大概内容是:
一个人在中国时用中国话问候大家,在国外时用英语问候大家。
其中,
IHelloMessage是接口,用来定义输出问候信息
public interface IHelloMessage { public String sayhello(); }
HelloWorld是接口的实现类,向用户输出 hello world 信息
public class HelloWorld implements IHelloMessage { @Override public String sayhello() { // TODO Auto-generated method stub return "hello world"; } }
HelloChina 是接口的实现类,向用户输出 大家好 信息
public class HelloChina implements IHelloMessage{ @Override public String sayhello() { // TODO Auto-generated method stub return "大家好"; } }
Person是人物类,调用IHelloMessage接口,向用户输出问候信息
public class Person { private IHelloMessage helloMessage; public IHelloMessage getHelloMessage() { return helloMessage; } public void setHelloMessage(IHelloMessage helloMessage) { this.helloMessage = helloMessage; } public String sayHello(){ return helloMessage.sayhello(); } }
Main是程序的入口类,用于加载配置文件以及启动IOC容器,调用人物类,向用户输出问候信息
public class Main { public static void main(String[] args) { //利用FileSystemResource读取配置文件 Resource r = new FileSystemResource("helloMessage.xml"); //利用XmlBeanFactory加载配置文件同时启动IOC容器 BeanFactory f = new XmlBeanFactory(r); //接下来在IOC容器中获取Person类的实例 Person person = (Person) f.getBean("person"); String message = person.sayHello(); System.out.println(message); } }
配置文件helloMessage
<?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="helloWorld" class="com.xiongda.spring.hello.HelloWorld"></bean> <bean id="helloChina" class="com.xiongda.spring.hello.HelloChina"></bean> <bean id="person" class="com.xiongda.spring.hello.Person"> <property name="helloMessage" ref="helloWorld"/> </bean> </beans>
可以看出原本的类之间是独立的,通过配置文件在他们之间建立了依赖,也就是说将控制权由原来的对象本身转移到了配置文件当中,也就是所谓的控制反转
务实,说实话!