zoukankan      html  css  js  c++  java
  • Spring中ClassPathXmlApplication与FileSystemXmlApplicationContext的区别

    Spring中ClassPathXmlApplication与FileSystemXmlApplicationContext的区别

    一、概述

    在项目中遇到加载不到Spring配置文件,简单分析后,写此文备忘!

    二、测试所需资源

    TestBean.java

    public class TestBean {
        public TestBean(){
            System.out.println(this.getClass().getName().concat(" init !"));
        }
    
        public String getTestStr() {
            return "testStr";
        }
    }

    applicationContext.xml

    <bean id="testBean" class="com.bean.TestBean" />

    二、区别

    2.1 ClassPathXmlApplicationContext使用方法

    ClassPathXmlApplicationContext 默认会去 classPath 路径下找。classPath 路径指的就是编译后的 classes 目录。

    示例:

    @Test
    public void testBean(){
        //单配置文件方式一
        BeanFactory beanFactory=new ClassPathXmlApplicationContext("applicationContext.xml");
        
        //单配置文件方式二
        BeanFactory beanFactory=new ClassPathXmlApplicationContext("classpath:applicationContext.xml");
        
        //多个配置文件
        BeanFactory beanFactory=new ClassPathXmlApplicationContext(new String[]{"applicationContext.xml"});
        
        //绝对路径需加“file:”前缀
        BeanFactory beanFactory = new ClassPathXmlApplicationContext("file:E:Workspaceidea_workspacespringspringtestsrcmain
    esourcesapplicationContext.xml");
    
        TestBean bean= (TestBean) beanFactory.getBean("testBean");
        assertEquals("testStr",bean.getTestStr());
    }

    运行示例你会发现 “classpath:” 是可以缺省的。
    如果是绝对路径,就需要加上 “file:” 前缀,不可缺省。

    2.2 FileSystemXmlApplicationContext使用方法

    FileSystemXmlApplicationContext 默认是去项目的路径下加载,可以是相对路径,也可以是绝对路径,若是绝对路径,“file:” 前缀可以缺省。

    示例:

    @Test
    public void testBean(){
        //classes目录
        BeanFactory beanFactory=new FileSystemXmlApplicationContext("classpath:applicationContext.xml");
    
        //项目路径相对路径
        BeanFactory beanFactory=new FileSystemXmlApplicationContext("src\main\resources\applicationContext.xml");
    
        //多配置文件
        BeanFactory beanFactory=new FileSystemXmlApplicationContext(new String[]{"src\main\resources\applicationContext.xml"});
    
        //绝对目录
        BeanFactory beanFactory=new FileSystemXmlApplicationContext(new String[]{"E:\Workspace\idea_workspace\spring\springtest\src\main\resources\applicationContext.xml"});
    
        TestBean bean= (TestBean) beanFactory.getBean("testBean");
        assertEquals("testStr",bean.getTestStr());
    }
  • 相关阅读:
    [置顶] Django 微信开发(一)——环境搭建
    opencv学习_5 (IplImage的结构)
    HDU 3910 (13.10.31)
    Python源码学习七 .py文件的解释
    Android高效加载大图、多图解决方案,有效避免程序内存溢出现象
    记录cocos2d-html5与cocosd-x jsb中遇到的坑
    【PAT Advanced Level】1011. World Cup Betting (20)
    Linux文件实时同步,可实现一对多
    mahout源码分析之DistributedLanczosSolver(五)Job over
    php引入lucene方法
  • 原文地址:https://www.cnblogs.com/cristin/p/8722191.html
Copyright © 2011-2022 走看看