Hello Spring Framework——源(Resources)

本文介绍Spring框架如何解析外部资源文件,仅参考官方文档《第7章 Resources》。

***************************以下是正文的部分***************************

通过Spring框架提供的对象可以获取诸如Http,Ftp,File,InputStream,ByteArray等形式的外部资源。总体来说,这些对象都继承自ApplicationContext接口。包括为了初始化Spring容器常用的ClassPathXmlApplicationContext和AnnotationConfigApplicationContext对象。下面通过代码举例:

一、通过URL地址获取XML配置文件

package resources.loader;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class ResourceLoader {
    public static void main(String[] args) {
        ApplicationContext ctx = new ClassPathXmlApplicationContext("http://localhost:8080/Demo/lazyConfig.xml");
        for(String beanName : ctx.getBeanDefinitionNames()){
            System.out.println(beanName);
        }
    }
}
使用http:前缀

二、获取本地资源文件

(1)获取classpath目录下的资源文件

package resources.loader;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext;

public class ResourceLoader {
    public static void main(String[] args) {
        ApplicationContext ctx = new FileSystemXmlApplicationContext("classpath:appConfig.xml");
        for(String beanName : ctx.getBeanDefinitionNames()){
            System.out.println(beanName);
        }
    }
}
使用classpath:前缀

(2)获取任意目录下的资源文件

package resources.loader;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext;

public class ResourceLoader {
    public static void main(String[] args) {
        //使用绝对路径作为参数可以解析任何路径下的资源文件
        ApplicationContext ctx = new FileSystemXmlApplicationContext("file:/.../lazyConfig.xml");
        for(String beanName : ctx.getBeanDefinitionNames()){
            System.out.println(beanName);
        }
    }
}
使用绝对路径

(3)获取classpath以及子目录下的资源文件

ApplicationContext ctx =
    new ClassPathXmlApplicationContext("classpath*:conf/appContext.xml");
使用classpath*前缀

通常获取用来配置Spring容器的XML文件只会使用ClassPathXmlApplicationContext对象,上面的例子只是为了说明ApplicationContext接口还有其它实现。开发中并不会这样使用。

 

其实这篇文稿之前就写好了,但是一直没有发表。原因是对于这部分的知识,我仅仅是翻译了文档而已,实际应用中并无使用过。但是后来有看过的朋友说还是应该发表出来,原因是他们觉得对于这部分的内容,对于不想阅读英文的朋友从学习Spring的角度上出发还是有些帮助的。特此感谢他们。

你可能感兴趣的:(Hello Spring Framework——源(Resources))