`
Wind_ZhongGang
  • 浏览: 260434 次
  • 性别: 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 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面试题和答案.pdf

    Spring下描述依赖关系@Resource, @Autowired和@Inject的区别与联系 Spring中BeanFactory和ApplicationContext的区别 谈谈Spring IOC的理解,原理与实现? bean的生命周期,详细看上面 SpringBoot自动装配的过程的原理...

    25个经典的Spring面试问答

    BeanFactory和ApplicationContext有什么区别 Spring有几种配置方式 如何用基于XML配置的方式配置Spring 如何用基于Java配置的方式配置Spring 怎样用注解的方式配置Spring 请解释Spring Bean的生命周期 Spring Bean的...

    Spring注释 注入方式源码示例,Annotation

    凡带有@Component,@Controller,@Service,@Repository 标志的等于告诉Spring这类将自动产生对象,而@Resource则等于XML配置中的ref,告诉spring此处需要注入对象,所以用@Resource就有了ref的功效。 要用注解注入方式...

    Spring-Reference_zh_CN(Spring中文参考手册)

    2. Spring 2.0 的新特性 2.1. 简介 2.2. 控制反转(IoC)容器 2.2.1. 更简单的XML配置 2.2.2. 新的bean作用域 2.2.3. 可扩展的XML编写 2.3. 面向切面编程(AOP) 2.3.1. 更加简单的AOP XML配置 2.3.2. 对@AspectJ 切面的...

    Spring中文帮助文档

    3.10. 以J2EE RAR文件的形式部署Spring ApplicationContext 3.11. 基于注解(Annotation-based)的配置 3.11.1. @Autowired 3.11.2. 基于注解的自动连接微调 3.11.3. CustomAutowireConfigurer 3.11.4. @...

    开源框架 Spring Gossip

    简介 Spring Inversion of Control Dependency Injection <br> 核心容器 Spring 核心容器实作了 IoC,BeanFactory 与 ApplicationContext 的运用是了解 Spring 的重点所在。 管理 Bean...

    Spring面试专题.pdf

    5、BeanFactory 和 ApplicationContext 有什么区别? 6、Spring 有几种配置方式? 7、如何用基于 XML 配置的方式配置 Spring? 8、如何用基于 Java 配置的方式配置 Spring? 9、怎样用注解的方式配置 Spring? 10、...

    Spring面试题.zip

    5、BeanFactory 和 ApplicationContext 有什么区别? 6、Spring 有几种配置方式? 7、如何用基于 XML 配置的方式配置 Spring? 8、如何用基于 Java 配置的方式配置 Spring? 9、怎样用注解的方式配置 Spring? 10、...

    Spring API

    3.10. 以J2EE RAR文件的形式部署Spring ApplicationContext 3.11. 基于注解(Annotation-based)的配置 3.11.1. @Autowired 3.11.2. 基于注解的自动连接微调 3.11.3. CustomAutowireConfigurer 3.11.4. @...

    Spring 2.0 开发参考手册

    2. Spring 2.0 的新特性 2.1. 简介 2.2. 控制反转(IoC)容器 2.2.1. 更简单的XML配置 2.2.2. 新的bean作用域 2.2.3. 可扩展的XML编写 2.3. 面向切面编程(AOP) 2.3.1. 更加简单的AOP XML配置 2.3.2. 对@...

    spring-boot-reference.pdf

    Registering Servlets, Filters, and Listeners as Spring Beans 27.4.2. Servlet Context Initialization Scanning for Servlets, Filters, and listeners 27.4.3. The ServletWebServerApplicationContext 27.4.4....

    Struts2+Spring3+MyBatis3完整实例

    网上的东西好大多都不能直接用,自己结合网上资料做了一个Struts2+Spring3+MyBatis3的测试工程,JUnit测试用例和WEB服务。 内涵完整jar包,解压直接可用,包括一个表文件。 Eclipse3.2+Tomcat/5.5+jdk1.5.0_17 - ...

    spring-test-4.1.2.RELEASE-sources.jar

    因为所有的Bean都需要在applicationContext.xml中加载好,之后再通过@Resource去取得。如果每次都要整个业务流做的差不多了再去测试,这样效率很低,也很麻烦。如果单独去写一个测试用类,这样太繁琐了。于是想起...

    spring chm文档

    Copies of this document may be made for your own use and for distribution to others, provided that you do not charge any fee for such copies and further provided that each copy contains this Copyright...

    Spring AOP配置源码

    @Component("userService")等价于在spring配置文件中定义一个<bean id="userService"/> @Resource(name="userDAO")将userDA注入进来 写一个拦截器的类 package com.spring.aop; import org.springframework....

    spring AOP

    Resource res = new ClassPathResource("applicationContext.xml"); XmlBeanFactory xbf = new XmlBeanFactory(res); //开启事物 StudentDao dao = (StudentDao) xbf.getBean("studentDao"); dao.save(stu...

    maven相关资料

    一、简单的用ApplicationContext做测试的话,获得Spring中定义的Bean实例(对象).可以用: ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml"); RegisterDAO registerDAO = ...

    Spring.html

    --全局初始化参数--> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:applicationContext.xml</param-value> 4.在Servlet中使用WebApplicationContextUtils获取容器...

    springmybatis

    mybatis实战教程mybatis in action之五与spring3集成附源码 mybatis实战教程mybatis in action之六与Spring MVC 的集成 mybatis实战教程mybatis in action之七实现mybatis分页源码下载 mybatis实战教程mybatis in ...

Global site tag (gtag.js) - Google Analytics