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>

可以看出原本的类之间是独立的,通过配置文件在他们之间建立了依赖,也就是说将控制权由原来的对象本身转移到了配置文件当中,也就是所谓的控制反转

 

posted @ 2018-06-13 23:44  xtu熊大  阅读(357)  评论(0编辑  收藏  举报