快速上手Spring加载Bean配置文件
来源:优易学  2011-11-29 16:14:43   【优易学:中国教育考试门户网】   资料下载   IT书店

  1. 创建项目

  新建一个Java Project:SpringBeanFile,注意要导入用户库Spring.

  这是完成后整个项目的结构(预览一下):项目源码下载(不包含库文件):http://free.ys168.com/?javamxj Spring目录下面。

  2. 编写类文件

  下面开始创建一个新类:BeanFile ;包名:javamxj.spring.beanfile

  BeanFile.java

  package javamxj.spring.beanfile;

  public class BeanFile {

  private String beanFile = "多种方式加载Bean的配置文件";

  public void setBeanFile(String beanFile) {

  this.beanFile = beanFile;

  }

  public String getBeanFile() {

  return beanFile;

  }

  }

  新建Test.java,测试一下。

  package javamxj.spring.beanfile;

  import java.io.FileInputStream;

  import java.io.FileNotFoundException;

  import java.io.InputStream;

  import org.springframework.beans.factory.BeanFactory;

  import org.springframework.beans.factory.support.BeanDefinitionRegistry;

  import org.springframework.beans.factory.support.DefaultListableBeanFactory;

  import org.springframework.beans.factory.support.PropertiesBeanDefinitionReader;

  import org.springframework.beans.factory.xml.XmlBeanFactory;

  import org.springframework.context.ApplicationContext;

  import org.springframework.context.support.ClassPathXmlApplicationContext;

  import org.springframework.core.io.ClassPathResource;

  import org.springframework.core.io.FileSystemResource;

  import org.springframework.core.io.InputStreamResource;

  import org.springframework.core.io.Resource;

  public class Test {

  public static void main(String[] args) {

  // 直接调用HelloBean

  BeanFile bf = new BeanFile();

  System.out.println(bf.getBeanFile());

  /**

  * 利用XmlBeanFactory(Resource resource)

  * 这里Resource必须是xml格式

  * Resource包括:AbstractResource, ClassPathResource, FileSystemResource,

  * InputStreamResource, ServletContextResource, UrlResource

  */

  /*

  * 利用 InputStreamResource(InputStream inputStream)

  * 要将bean.xml放在项目根目录下

  */

  InputStream is = null;

  try {

  is = new FileInputStream("bean1.xml");

  } catch (FileNotFoundException e) {

  e.printStackTrace();

  }

  Resource resource = new InputStreamResource(is);

  sayHello(resource);

  /*

  * 利用 ClassPathResource(String path)

  * 要将bean.xml放在源文件夹(src)目录下

  */

  resource = new ClassPathResource("bean2.xml");

  sayHello(resource);

  /*

  * 利用 FileSystemResource(String path)

  * 要将bean.xml放在项目根目录下

  */

  resource = new FileSystemResource("bean3.xml");

  sayHello(resource);

  /*

  * 利用 Properties

  * 要将bean.properties放在类路径--源文件夹(src)目录下

  */

  BeanDefinitionRegistry reg = new DefaultListableBeanFactory();

  PropertiesBeanDefinitionReader reader = new PropertiesBeanDefinitionReader(

  reg);

  reader.loadBeanDefinitions(new ClassPathResource("bean.properties"));

  BeanFactory factory = (BeanFactory) reg;

  bf = (BeanFile) factory.getBean("beanFile");

  System.out.println("利用 " + bf.getBeanFile() + " 加载 Bean.properties");

  /*

  * 利用 ApplicationContext

  * 要将bean.xml放在类路径--源文件夹(src)目录下

  */

  ApplicationContext appContext = new ClassPathXmlApplicationContext(

  "bean4.xml");

  bf = (BeanFile) appContext.getBean("beanFile");

  System.out.println("利用 " + bf.getBeanFile() + " 加载 Bean.xml");

  }

  public static void sayHello(Resource resource) {

  BeanFactory factory = new XmlBeanFactory(resource);

  BeanFile bf = (BeanFile) factory.getBean("beanFile");

  System.out.println("利用 " + bf.getBeanFile() + " 加载 Bean.xml");

  }

  }

  3. 配置文件

  由上面的Test.java可知,这里一共需要四个XML文件和一个Properties文件,现在分别建立。

  bean1.xml放在项目根目录下:

  bean1.xml

  xml version="1.0" encoding="GBK"?>

  DOCTYPE beans PUBLIC "-//SPRING/DTD BEAN/EN"

  "http://www.springframework.org/dtd/spring-beans.dtd">

  <beans>

  <bean id="beanFile" class="javamxj.spring.beanfile.BeanFile">

  <property name="beanFile">

  <value>InputStreamResource(InputStream inputStream)value>

  property>

  bean>

  beans>

  bean2.xml、bean3.xml、bean4.xml与bean1.xml相似,仅仅需要替换一下值即可。重要的注意文件的存放位置。这里只给出不同的代码;

  ? bean2.xml放在源文件夹(src)目录下:

  bean2.xml(部分)

  <property name="beanFile">

  <value>ClassPathResource(String path)value>

  property>

  ? bean3.xml放在项目根目录下:

  bean3.xml(部分)

  <property name="beanFile">

  <value>FileSystemResource(String path)value>

  property>

  ? bean4.xml放在源文件夹(src)目录下:

  bean4.xml(部分)

  <property name="beanFile">

  <value>ApplicationContextvalue>

  property>

  Spring也可以使用属性文件来定义配置文件,如下:

  ? bean.properties放在源文件夹(src)目录下:

  bean.properties

  beanFile.class=javamxj.spring.beanfile.BeanFile

  beanFile.beanFile=properties

  还需要将上文《快速上手Spring--2.HelloWorld(2)》中的log4j.properties复制到src目录下。

  4. 运行程序

  右击Test.java,运行程序,控制台输出如下:

  多种方式加载Bean的配置文件

  利用 InputStreamResource(InputStream inputStream) 加载 Bean.xml

  利用 ClassPathResource(String path) 加载 Bean.xml

  利用 FileSystemResource(String path) 加载 Bean.xml

  利用 properties 加载 Bean.properties

  利用 ApplicationContext 加载 Bean.xml

  5. 小结

  这篇文章主要谈论了如何加载Spring的配置文件,一般来说,就是BeanFactory和ApplicationContext.最常使用的、简单的BeanFactory实现是org.springframework.beans.factory.xml.XmlBeanFactory,其加载方式为:BeanFactory factory = new XmlBeanFactory(Resource resource)

  这里resource必须是xml格式。Resource包括: AbstractResource, ClassPathResource, FileSystemResource, InputStreamResource, ServletContextResource, UrlResource.这篇文章 谈了常用的三种:ClassPathResource, FileSystemResource, InputStreamResource.

  ApplicationContext包括了BeanFactory的所有功能,也要比BeanFactory强大的多(以后会详细介绍的)。这里只简单的使用了ClassPathXmlApplicationContext加载了Bean配置文件。你可以将log4j.properties中的“Warn”改为“Debug”, 对比一下和ClassPathResource的输出,

  在Eclipse中,bean2.xml、bean4xml虽然都是放在源文件夹(src)目录下,但实际上,是由已经编译好的Test.class从类文件夹(这里是bin文件夹)中加载的。

责任编辑:小草

文章搜索:
 相关文章
热点资讯
热门课程培训