zoukankan      html  css  js  c++  java
  • Spring的IoC容器-Spring BeanFactory容器

    虽然这个方法已经在3.1之后已经弃用了,但是可以了解一下。

    在Spring中,有大量对BeanFactory接口的实现。其中,最常被使用的是XmlBeanFactory类。这个容器从一个XML文件中读取配置元数据,由这些元数据来生成一个被配置化的系统或者应用。

    在资源宝贵的移动设备或者基于applet的应用当中, BeanFactory会被优先选择。否则,一般使用的是ApplicationContext,除非你有更好的理由选择BeanFactory。

    例子实践:

    pom.xml:

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
      <modelVersion>4.0.0</modelVersion>
    
      <groupId>com.jsoft.testspring</groupId>
      <artifactId>testbeanfactory</artifactId>
      <version>0.0.1-SNAPSHOT</version>
      <packaging>jar</packaging>
    
      <name>testbeanfactory</name>
      <url>http://maven.apache.org</url>
    
      <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
      </properties>
    
      <dependencies>
        <dependency>
          <groupId>junit</groupId>
          <artifactId>junit</artifactId>
          <version>3.8.1</version>
          <scope>test</scope>
        </dependency>
        
        <!-- Spring Core -->
        <!-- http://mvnrepository.com/artifact/org.springframework/spring-core -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <version>4.1.4.RELEASE</version>
        </dependency>
         
        <!-- Spring Context -->
        <!-- http://mvnrepository.com/artifact/org.springframework/spring-context -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>4.1.4.RELEASE</version>
        </dependency>
        
      </dependencies>
    </project>

    HelloWorld.java:

    package com.jsoft.testspring.testbeanfactory;
    
    public class HelloWorld {
    
        private String messageString;
        
        public void setMessage(String message){
            this.messageString = message;
        }
        
        public String getMessage(){
            return this.messageString;
        }
        
    }

    beans.xml:

    <beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://www.springframework.org/schema/beans
                            http://www.springframework.org/schema/beans/spring-beans.xsd">
      
        <bean id="helloWorld" class="com.jsoft.testspring.testbeanfactory.HelloWorld">
            <property name="message" value="Hello World!"/>
        </bean>
      
    </beans>

    App.java:

    package com.jsoft.testspring.testbeanfactory;
    
    import org.springframework.beans.factory.xml.XmlBeanFactory;
    import org.springframework.core.io.ClassPathResource;
    
    /**
     * Hello world!
     *
     */
    public class App 
    {
        public static void main( String[] args )
        {
            XmlBeanFactory xmlBeanFactory = new XmlBeanFactory(new ClassPathResource("beans.xml"));
            HelloWorld helloWorld = (HelloWorld)xmlBeanFactory.getBean("helloWorld");
            System.out.println(helloWorld.getMessage());
        }
    }

    运行结果:

    运行原理:

    • 第一步利用框架提供的XmlBeanFactory() API去生成工厂bean以及利用ClassPathResource() API去加载在路径CLASSPATH下可用的bean配置文件。XmlBeanFactory() API负责创建并初始化所有的对象,即在配置文件中提到的bean。

    • 第二步利用第一步生成的bean工厂对象的getBean()方法得到所需要的bean。 这个方法通过配置文件中的bean ID来返回一个真正的对象,该对象最后可以用于实际的对象。一旦得到这个对象,就可以利用这个对象来调用任何方法。

    测试工程:https://github.com/easonjim/5_java_example/tree/master/springtest/test2/testbeanfactory

    以上参考:http://wiki.jikexueyuan.com/project/spring/ioc-container/spring-bean-fatory-container.html

  • 相关阅读:
    鸡啄米vc++2010系列9(对话框控件的Tab顺序)
    鸡啄米vc++2010系列8(对话框:为控件添加消息处理函数)
    鸡啄米vc++2010系列7(对话框:创建对话框类和添加控件变量)
    鸡啄米vc++2010系列6(对话框添加控件)
    鸡啄米vc++2010系列5( 对话框:创建对话框模板和修改对话框属性)
    鸡啄米vc++2010系列4(消息机制)
    鸡啄米vc++2010系列3(MFC应用程序框架分析)
    鸡啄米vc++2010系列2(项目文件分析)
    鸡啄米VC++2010系列1(解决方案与工程)
    opencv2.3.1在vs2010上的配置
  • 原文地址:https://www.cnblogs.com/EasonJim/p/6875840.html
Copyright © 2011-2022 走看看