1. 创建项目
· 新建一个Java Project:SpringBeanFile,注意要导入用户库Spring。
· 这是完成后整个项目的结构(预览一下):
· 项目源码下载(不包含库文件):http://free./?javamxj Spring目录下面。
2. 编写类文件
· 下面开始创建一个新类:BeanFile ;包名:javamxj.spring.beanfile
· 新建Test.java,测试一下。
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放在项目根目录下:
bean2.xml、bean3.xml、bean4.xml与bean1.xml相似,仅仅需要替换一下<value>值即可。重要的注意文件的存放位置。这里只给出不同的代码;
· bean2.xml放在源文件夹(src)目录下:
· bean3.xml放在项目根目录下:
· bean4.xml放在源文件夹(src)目录下:
Spring也可以使用属性文件来定义配置文件,如下:
· bean.properties放在源文件夹(src)目录下:
· 还需要将上文《快速上手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文件夹)中加载的。
|
|