Spring-BeanFactory容器

Spring的BeanFactory容器

这是Spring中最简单地容器,它主要的功能是为依赖注入(DI)提供支持。这个容器接口在org.springframework.beans.factory.BeanFactor中被定义。BeanFactory和行管的接口,比如BeanFactoryAware,DisposableBean,InitializingBean,仍旧保留在Spring中,主要目的是向后兼容已经存在的和那些Spring整合在一起的第三方框架。

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

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

例子:

下面是HelloWorld.java的内容:

package com.tutorialspoint;

public class HelloWorld {
    private String message;

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }
    
}

下面是MainApp.java的内容:

package com.tutorialspoint;

import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.core.io.ClassPathResource;

public class MainApp {
    public static void main(String[] args) {
//        ApplicationContext context = new ClassPathXmlApplicationContext("Beans.xml");
        XmlBeanFactory factory = new XmlBeanFactory(new ClassPathResource("Beans.xml"));
        HelloWorld h = (HelloWorld) factory.getBean("helloWorld");
        System.out.println(h.getMessage());
    }
}

在主程序当中,需要注意一下两点:

  • 第一步利用框架提供的XmlBeanFactory()API去生成工厂bean以及利用ClassPathResource()API去加载在路径CLASSPATH下可用的bean配置文件。XmlBeanFactory()API负责创建并初始化所有的对象,即在配置文件中提到的bean。
  • 第二步利用第一步生成的bean工厂对象的getBean()方法得到所需的bean。这个方法通过配置文件中的beanID来返回一个真正的对象,该对象最后可以用于实际的对象。一旦得到这个对象,就可以利用这个对象来调用方法。

下面是Beans.xml文件的内容:

<?xml version="1.0" encoding="UTF-8"?>

<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-3.0.xsd">

   <bean id="helloWorld" class="com.tutorialspoint.HelloWorld">
       <property name="message" value="Hello World!"/>
   </bean>

</beans>

执行的结果:

 

posted @ 2017-11-03 14:26  起床oO  阅读(334)  评论(0编辑  收藏  举报