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》 在Java世界中,Spring框架是不可或缺的一部分,它以其强大的IoC(Inversion of Control,控制反转)和AOP(Aspect Oriented Programming,面向切面编程)特性,极大地...
在Spring框架中,ClassPathResource是获取类路径资源的一个重要工具。它允许我们从类路径(classpath)中读取文件,如配置文件、属性文件等,这对于构建和管理Java应用程序非常有用。本篇文章将深入探讨如何使用Spring...
在实际使用中,我们通常会通过Spring的`ApplicationContext`或者`ResourceLoader`来获取`Resource`实例,然后调用其`getInputStream()`方法获取输入流,进一步读取配置文件内容。例如: ```java Resource resource ...
1. 配置文件加载:Spring应用通常需要加载外部的配置文件,如applicationContext.xml,可以使用ClassPathResource从类路径加载。 2. 文件上传下载:在处理文件上传和下载时,Resource可以帮助我们处理临时文件或存储...
6. **资源处理**:在`applicationContext.xml`中可以配置资源加载,如`<context:resource location="classpath:database.properties"/>`来加载属性文件。 7. **国际化**:Spring支持多语言环境,通过`...
在压缩包`test008`中,可能包含了一个简单的Spring配置文件(如`applicationContext.xml`)和一个或多个Java类,这些类可能使用了`@Resource`注解来展示注入的用法。配置文件可能包含bean的定义,如下: ```xml ...
然而,在某些情况下,我们可能需要读取传统的`applicationContext.xml`配置文件,例如,当我们需要整合一些遗留的Spring组件或者第三方库时。本篇文章将深入探讨在Spring Boot中如何在不同路径下读取`...
本篇文章将详细探讨如何在Spring Boot中读取不同路径下的`applicationContext.xml`文件。 首先,了解Spring Boot默认的启动机制,它通过`@SpringBootApplication`注解来扫描和初始化应用。这个注解包含了`@...
在测试类中,我们使用 Spring 的 ApplicationContext 对象来加载配置文件,并获取依赖的 Bean 对象。我们可以使用 Bean 对象的方法来测试依赖关系是否正确。 优点 使用 @Resource 注解来配置依赖关系可以简化 Bean...
org.springframework.beans.factory.BeanDefinitionStoreException: Unexpected exception parsing XML document from class path resource [applicationContext.xml]; nested exception is java.lang....
在测试类中,我们使用了Spring的ApplicationContext来加载配置文件,然后获取TestBean的实例,最后调用parse()方法来解析资源中的XML文件。 使用Resource作为属性可以实现对资源的访问和操作,提高了系统的灵活性...
此外,`ClassPathResource`还可以与其他Spring的IoC功能结合,例如使用`ApplicationContext`的`getResource`方法加载XML配置文件,然后通过`BeanDefinitionReader`读取和注册bean定义。这样,Spring容器就能根据XML...
在 Spring 3.x 中,提供了两种用于属性装配的注解:@Autowired 和 @Resource。 1. @Autowired @Autowired 注解用于自动装配依赖项,默认按照类型匹配的方式(byType)进行注入。可以用于成员变量、setter 方法、...
4. **ApplicationContext Service Publication**:一旦ApplicationContext被创建,Spring DM会自动将其中的bean暴露为OSGi服务,使得其他Bundle可以轻松地发现和使用它们。 三、新特性 在Spring DM的多个版本中,...
总结来说,Spring的IOC容器机制通过`BeanFactory`和`ApplicationContext`接口的实现,提供了强大且灵活的对象管理和依赖注入能力,极大地简化了Java应用的开发和维护过程。通过深入理解IOC容器的创建与初始化流程,...
**通过`import`标签引入其他配置文件**:在`spring-mvc.xml`中使用`<import resource="user_spring.xml"/>`引入其他配置文件。 2. **在`web.xml`中配置**:可以在`web.xml`中指定`contextConfigLocation`参数来...
- **Task Execution and Scheduling:** Spring 支持任务执行和调度功能。 - **动态语言支持:** Spring 支持 Groovy、Ruby 等动态语言的集成。 以上是 Spring Framework 3.0 的核心知识点,涵盖了框架的主要特性和...
Spring框架是Java企业级应用开发的基石,而`spring-context`模块则是Spring框架的核心部分,它提供了上下文(ApplicationContext)接口,为bean的创建、配置、管理以及与其他服务的集成提供了全面支持。本文将深入...