Spring---基于Spring IOC的小程序

Posted H小白

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring---基于Spring IOC的小程序相关的知识,希望对你有一定的参考价值。

实现的功能以及各文件间的关系

IHelloMessage:一个接口,用于定义输出问候信息。

HelloWorld、HelloChina:接口的实现类。在这里表示人在不同的地方

Person:一个人物类,调用IHelloMessage接口,向用户输出问候信息

Main:程序的入口类,用于加载配置文件以及启动IOC容器,调用人物类,向用户输出问候信息

IHelloMessage

public interface IhelloMessage {

    public String sayHello();
    public String say();

}

 

HelloWorld、HelloChina

public class HelloWord implements IhelloMessage {

    @Override
    public String sayHello() {
        // TODO Auto-generated method stub
        return "Hello World";
    }

    @Override
    public String say() {
        // TODO Auto-generated method stub
        return "ceshi";
    }

}

 

Person

public class Person {

    private IhelloMessage helloMessage;
    
    public void setHelloMessage(IhelloMessage helloMessage) {
        this.helloMessage = helloMessage;
    }
    
    public IhelloMessage getHelloMessage() {
        return helloMessage;
    }
    
    public String sayHello() {
        
        return helloMessage.say();
        
    }
    
}

 

Main

public class Main {

    public static void main(String[] args) {
        // 读取配置文件
        Resource resource = new FileSystemResource("helloMessage.xml");
        // 加载并启动IOC容器
        BeanFactory factory = new XmlBeanFactory(resource);
        // 从容器中获取实例
        Person person = (Person) factory.getBean("person");
        String str = person.sayHello();
        System.out.println(str);
    }

}

 

spring3.1以上的版本中XmlBeanFactory已过时,有两种解决方案

1.将XmlBeanFactory替换成DefaultListableBeanFactory和XmlBeanDefinitionReader,代码如下Main类所写

public class Main {

    public static void main(String[] args) {
        // 读取配置文件
        Resource resource = new FileSystemResource("helloMessage.xml");
        // 构造工厂
        DefaultListableBeanFactory factory= new DefaultListableBeanFactory ();
        // 通过构造工厂得到加载并启动IOC容器
        XmlBeanDefinitionReader reader = new XmlBeanDefinitionReader(factory);
        // 将读取到的配置文件加载到容器中
        reader.loadBeanDefinitions(resource);
        // 从容器中获取实例
        Person person = (Person) factory.getBean("person");
        String str = person.sayHello();
        System.out.println(str);
    }

}

 2.使用其它几种方式加载配置文件。详见Spring---加载配置文件的几种方法(org.springframework.beans.factory.BeanDefinitionStoreException)

配置文件xml

Java bean

每个bean对应一个java文件,当这个类文件配置到spring容器当中后,就变成了一个一个小豆子,而每个小豆子都拥有自己独立的功能。在运行spring工程之前,我们需要做的有两件事情。第一,将这些java类以java bean的形式注册到spring容器中。第二,通过配置文件来配置java bean之间的依赖关系。各个单独的类(组件)只需要关心自己的核心业务逻辑,而它们之间的依赖关系,则交由spring容器来配置和管理,这就是控制反转,而相对于类(组件),我们则可以称为依赖注入。以下是配置文件的示例代码

<?xml version="1.0" encoding="UTF-8"?>
<!-- 定义使用哪种规范进行解析配置文件 -->
<!DOCTYPE beans PUBLIC "-//SPRING/DTD BEAN/EN" 
"http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
    <!-- bean:定义java bean -->
    <bean id = "helloWorld" class = "com.hudongwu.spring.chapter01.HelloWord"></bean>
    <bean id = "helloChina" class = "com.hudongwu.spring.chapter01.HelloChina"></bean>
    <bean id = "person" class = "com.hudongwu.spring.chapter01.Person">
        <!-- 与其它java bean建立依赖关系 -->
        <property name="helloMessage" ref="helloWorld"></property>
    </bean>
</beans>

 

以上是关于Spring---基于Spring IOC的小程序的主要内容,如果未能解决你的问题,请参考以下文章

Spring Day01 Spring 框架概述以及Spring中基于XML的IOC配置

Spring 从入门到精通系列 03——使用 Spring 的 IOC 解决程序耦合

Spring

Spring

Spring源码剖析-基于注解的IOC启动流程

Spring基于注解的IOC配置