• 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>

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

  • 相关阅读:
    OptaPlanner实用技术 批量规划和实时规划(2)
    【Golang】创建有配置参数的结构体时,可选参数应该怎么传?
    k8s:Pod生命周期
    k8s:容器生命周期回调
    在工厂<> 中 <> 已经是个追加物料
    The headers or library files could not be found for jpeg
    从进入内核态看内存管理
    迅雷加速原来分析
    idea编译build一直卡在那不动解决方法
    python入门爬虫豆瓣电影Top250
  • 原文地址:https://www.cnblogs.com/xtuxiongda/p/9180858.html
Copyright © 2020-2023  润新知