`
Wind_ZhongGang
  • 浏览: 264721 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

Spring ApplicationContext and Resource

阅读更多

  Spring提供了多种加载配置文件的类和接口,其中常用的有三个,第一个是FileSystemXmlApplicationContext,第二个是ClassPathXmlApplicationContext,第三个是XmlWebApplicationContext,三个类都实现了ApplicationContext接口。第一个从文件系统中加载配置文件,需要文件的绝对路径,第二个会从项目的类路径中查找配置文件,即classes文件夹下,第三个是特定针对Web项目而设计的,会从WEB-INF文件夹下查找配置文件。Spring还为我们提供了一个辅助类WebApplicationContextUtils用来处理以第三种方式加载配置文件。

 

  Spring提供了一个Resource接口用于处理项目资源文件,常用实现有四种,第一个是FileSystemResource,第二个ClassPathResource,第三个是ServletContextResource,第三个是UrlResource。同理ApplicationContext,第一个是从文件系统中查找文件,第二个是从项目类路径中查找文件,第三个是从Web项目上下文件中查找文件。Spring也为我们提供了一个辅助类ResourceUtils来处理文件查找与加载。

 

  Spring提供了一个PropertiesLoaderUtils用于编程时获取属性文件中的键值对,可以使用Resource来加载属性文件。

 

 

package com.spring;

import com.dream.model.photo.Photo;
import junit.framework.TestCase;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.FileSystemResource;
import org.springframework.core.io.Resource;
import org.springframework.core.io.support.PropertiesLoaderUtils;

import java.util.Properties;

/**
 * Created by IntelliJ IDEA.
 * User: Zhong Gang
 * Date: 11-9-4
 * Time: 下午11:19
 */
public class SpringApplicationContextAndResourceTest extends TestCase {

    public void testFileSystemXmlApplicationContext() throws Exception {
        String location = "F:\\IdeaProjects\\DreamBlog\\src\\test\\resources\\testApplicationContext.xml";
        ApplicationContext context = new FileSystemXmlApplicationContext(location);
        Photo bean = (Photo) context.getBean("photo");
        assertEquals("First photo", bean.getName());
        assertNotNull(bean.getDescription());
        assertNull(bean.getPath());
    }

    public void testClassPathXmlApplicationContext() throws Exception {
        String location = "testApplicationContext.xml";
        ApplicationContext context = new ClassPathXmlApplicationContext(location);
        Photo bean = (Photo) context.getBean("photo");
        assertEquals("First photo", bean.getName());
        assertNotNull(bean.getDescription());
        assertNull(bean.getPath());
    }

    public void testXmlWebApplicationContext() throws Exception {
//        ApplicationContext context = new XmlWebApplicationContext();
//        ApplicationContext context = WebApplicationContextUtils.getWebApplicationContext();
    }

    public void testFileSystemResource() throws Exception {
        String location = "F:\\IdeaProjects\\DreamBlog\\src\\test\\resources\\testApplicationContext.xml";
        Resource resource = new FileSystemResource(location);
        assertTrue(resource.exists());
        assertEquals("testApplicationContext.xml", resource.getFilename());
    }


    public void testClassPathResource() throws Exception {
        String location = "testApplicationContext.xml";
        Resource resource = new ClassPathResource(location);
        assertTrue(resource.exists());
        assertEquals("testApplicationContext.xml", resource.getFilename());
    }

    public void testServletContextResource() throws Exception {
//        Resource resource = new ServletContextResource();
    }

    public void testPropertiesFile() throws Exception {
        String location = "datasource.properties";
        Resource resource = new ClassPathResource(location);
        Properties properties = PropertiesLoaderUtils.loadProperties(resource);
        String username = properties.getProperty("username");
        assertEquals("zhonggang", username);
    }
}
 
分享到:
评论

相关推荐

    三、Spring源码分析——ApplicationContext

    《Spring源码分析——ApplicationContext》 在Java世界中,Spring框架是不可或缺的一部分,它以其强大的IoC(Inversion of Control,控制反转)和AOP(Aspect Oriented Programming,面向切面编程)特性,极大地...

    Spring_ClassPathResource获得bean对象

    在Spring框架中,ClassPathResource是获取类路径资源的一个重要工具。它允许我们从类路径(classpath)中读取文件,如配置文件、属性文件等,这对于构建和管理Java应用程序非常有用。本篇文章将深入探讨如何使用Spring...

    spring-resource

    在实际使用中,我们通常会通过Spring的`ApplicationContext`或者`ResourceLoader`来获取`Resource`实例,然后调用其`getInputStream()`方法获取输入流,进一步读取配置文件内容。例如: ```java Resource resource ...

    spring Resource管理详解

    1. 配置文件加载:Spring应用通常需要加载外部的配置文件,如applicationContext.xml,可以使用ClassPathResource从类路径加载。 2. 文件上传下载:在处理文件上传和下载时,Resource可以帮助我们处理临时文件或存储...

    spring2.5的applicationContext配置文件

    6. **资源处理**:在`applicationContext.xml`中可以配置资源加载,如`<context:resource location="classpath:database.properties"/>`来加载属性文件。 7. **国际化**:Spring支持多语言环境,通过`...

    spring使用resource注解的demo

    在压缩包`test008`中,可能包含了一个简单的Spring配置文件(如`applicationContext.xml`)和一个或多个Java类,这些类可能使用了`@Resource`注解来展示注入的用法。配置文件可能包含bean的定义,如下: ```xml ...

    Spring Boot技术知识点:如何读取不同路径里的applicationContext.xml配置文件6

    然而,在某些情况下,我们可能需要读取传统的`applicationContext.xml`配置文件,例如,当我们需要整合一些遗留的Spring组件或者第三方库时。本篇文章将深入探讨在Spring Boot中如何在不同路径下读取`...

    Spring Boot技术知识点:如何读取不同路径里的applicationContext.xml配置文件2

    本篇文章将详细探讨如何在Spring Boot中读取不同路径下的`applicationContext.xml`文件。 首先,了解Spring Boot默认的启动机制,它通过`@SpringBootApplication`注解来扫描和初始化应用。这个注解包含了`@...

    Spring实战之使用@Resource配置依赖操作示例

    在测试类中,我们使用 Spring 的 ApplicationContext 对象来加载配置文件,并获取依赖的 Bean 对象。我们可以使用 Bean 对象的方法来测试依赖关系是否正确。 优点 使用 @Resource 注解来配置依赖关系可以简化 Bean...

    Spring 3.0所需jar文件和对应的配置文件

    org.springframework.beans.factory.BeanDefinitionStoreException: Unexpected exception parsing XML document from class path resource [applicationContext.xml]; nested exception is java.lang....

    Spring实战之使用Resource作为属性操作示例

    在测试类中,我们使用了Spring的ApplicationContext来加载配置文件,然后获取TestBean的实例,最后调用parse()方法来解析资源中的XML文件。 使用Resource作为属性可以实现对资源的访问和操作,提高了系统的灵活性...

    Spring实战之使用ClassPathResource加载xml资源示例

    此外,`ClassPathResource`还可以与其他Spring的IoC功能结合,例如使用`ApplicationContext`的`getResource`方法加载XML配置文件,然后通过`BeanDefinitionReader`读取和注册bean定义。这样,Spring容器就能根据XML...

    spring3.x注解

    在 Spring 3.x 中,提供了两种用于属性装配的注解:@Autowired 和 @Resource。 1. @Autowired @Autowired 注解用于自动装配依赖项,默认按照类型匹配的方式(byType)进行注入。可以用于成员变量、setter 方法、...

    springDM开发指南(英文)

    4. **ApplicationContext Service Publication**:一旦ApplicationContext被创建,Spring DM会自动将其中的bean暴露为OSGi服务,使得其他Bundle可以轻松地发现和使用它们。 三、新特性 在Spring DM的多个版本中,...

    Spring源码分析_Spring_IOC

    总结来说,Spring的IOC容器机制通过`BeanFactory`和`ApplicationContext`接口的实现,提供了强大且灵活的对象管理和依赖注入能力,极大地简化了Java应用的开发和维护过程。通过深入理解IOC容器的创建与初始化流程,...

    spring 所有功能详解

    **通过`import`标签引入其他配置文件**:在`spring-mvc.xml`中使用`<import resource="user_spring.xml"/>`引入其他配置文件。 2. **在`web.xml`中配置**:可以在`web.xml`中指定`contextConfigLocation`参数来...

    spring_FrameWork3.0

    - **Task Execution and Scheduling:** Spring 支持任务执行和调度功能。 - **动态语言支持:** Spring 支持 Groovy、Ruby 等动态语言的集成。 以上是 Spring Framework 3.0 的核心知识点,涵盖了框架的主要特性和...

    spring-context源码

    Spring框架是Java企业级应用开发的基石,而`spring-context`模块则是Spring框架的核心部分,它提供了上下文(ApplicationContext)接口,为bean的创建、配置、管理以及与其他服务的集成提供了全面支持。本文将深入...

Global site tag (gtag.js) - Google Analytics