zoukankan      html  css  js  c++  java
  • Spring ClassPathXmlApplicationContext和FileSystemXmlApplicationContext

    先说:ClassPathXmlApplicationContext 
    这个类,默认获取的是WEB-INF/classes/下的路径,也就是在myeclipse的src下的路径,所以用这个是获取不到WEB-INF下的配置文件的... 

    下面是几个用法,引src下的一个文件,有以下几种方式 

    Java代码  收藏代码
    1. BeanFactory ac = new ClassPathXmlApplicationContext("applicationContext.xml");  
    2. BeanFactory ac = new ClassPathXmlApplicationContext("classpath:applicationContext.xml");  
    3. BeanFactory ac = new ClassPathXmlApplicationContext("classpath:/applicationContext.xml");  
    4. ac.getBean("beanID");  


    classpath:和classpath*:的区别: 
    classpath:   只能加载一个配置文件,如果配置了多个,则只加载第一个 
    classpath*:  可以加载多个配置文件,如果有多个配置文件,就用这个 

    引src下的多个文件,有以下几种方式 

    Java代码  收藏代码
    1. BeanFactory ac = new ClassPathXmlApplicationContext(new String[]{"applicationContext.xml","applicationContext-test.xml"});  
    2. BeanFactory ac = new ClassPathXmlApplicationContext("classpath*:/applicationContext*.xml");  
    3. BeanFactory ac = new ClassPathXmlApplicationContext("classpath*:src/folder/applicationContext*.xml");  





    再说:FileSystemXmlApplicationContext 
    这个类,默认获取的是项目路径,就是项目名的这级.但是我测试,在myeclipse下,执行main方法,获取配置文件,路径用WebRoot/WEB-INF/是没问题的,但是发布到tomcat下,就怎么配都不成功了,无奈,只能把配置文件全部移到src下了,因为担心发布到linux上后,又出现路径问题 

    下面是几个用法,引WEB-INF下的一个文件,有以下几种方式 

    Java代码  收藏代码
    1. BeanFactory factory = new FileSystemXmlApplicationContext("WebRoot/WEB-INF/applicationContext.xml");  
    2. BeanFactory factory = new FileSystemXmlApplicationContext("file:D:/workspace/testproject/WebRoot/WEB-INF/applicationContext.xml");  


    其中,FileSystemXmlApplicationContext的起始路径是项目路径,所以可以直接这样写WebRoot/WEB-INF 
    如果前边加了file:则说明后边的路径就要写全路径了,就是绝对路径 

    下面是几个用法,引WEB-INF/classes下的一个文件,有以下几种方式 

    Java代码  收藏代码
    1. BeanFactory factory = new FileSystemXmlApplicationContext("classpath:applicationContext.xml");  


    这其实跟ClassPathXmlApplicationContext是一样的,多个就加通配符 

    下面是几个用法,引WEB-INF下的多个文件,有以下几种方式 

    Java代码  收藏代码
    1. BeanFactory factory = new FileSystemXmlApplicationContext(new String[]{"WebRoot/WEB-INF/applicationContext.xml","WebRoot/WEB-INF/applicationContext-test.xml"});  
    2. BeanFactory factory = new FileSystemXmlApplicationContext("WebRoot/WEB-INF/applicationContext*.xml");  
    3. BeanFactory factory = new FileSystemXmlApplicationContext("file:D:/workspace/testproject/WebRoot/WEB-INF/applicationContext*.xml");  



    引WEB-INF/classes下的多个文件,也是一样的 

    Java代码  收藏代码
    1. BeanFactory factory = new FileSystemXmlApplicationContext(new String[]{"classpath:applicationContext.xml","classpath:applicationContext*.xml"});  
    2. BeanFactory factory = new FileSystemXmlApplicationContext("classpath*:applicationContext*.xml");  



    黑色头发:http://heisetoufa.iteye.com/

  • 相关阅读:
    [语录]学习和知识建立于见解的多样性上
    [语录]要紧的是选择能干、诚实而且勤勉的人
    [EnterpriseServices]利用assembly定义我们的组件在COM+中的注册方式
    [EntLib]在SR.Strings中使用中文字符串资源
    如何让Win2000和XP SP1支持System.EnterpriseServices(XP已验证)
    [C#]使用HttpWebRequest请求远端服务器时如何加载SSL证书
    [纪事]再见,CodeArtist(下)
    [ZT]Google Web Accelerator 进一步的发展?
    [纪事]再见,CodeArtist
    [WiX]我的第一个WiX安装脚本
  • 原文地址:https://www.cnblogs.com/google4y/p/3337142.html
Copyright © 2011-2022 走看看