zoukankan      html  css  js  c++  java
  • 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>
  • 相关阅读:
    人月神话阅读笔记
    12周总结
    IOS成长之路-用NSXMLParser实现XML解析
    沟通能力的表达
    IOS中UIScrollView的contentSize、contentOffset和contentInset属性
    Block 的使用时机
    drawAdapter
    drawpoly()函数的用法
    @synchronized(self)
    Swift2
  • 原文地址:https://www.cnblogs.com/xiaobaizhiqian/p/7746340.html
Copyright © 2011-2022 走看看