java读取配置文件内容

来源:互联网 发布:邢台羊毛衫知乎 编辑:程序博客网 时间:2024/04/25 15:10

一、使用org.apache.commons.configuration

需要使用的是jar包:commons-collections-3.2.1.jar、commons-configuration-1.10.jar、commons-lang-2.6.jar和commons-logging-1.2.jar。
可以读取的配置文件:xml和properties

1、读取xml文件

package com.styspace;  import org.apache.commons.configuration.Configuration;  import org.apache.commons.configuration.ConfigurationException;  import org.apache.commons.configuration.XMLConfiguration;  public class xmlLoaderTest {      public static void main(String[] args) throws ConfigurationException{         Configuration config = new XMLConfiguration("com/styspace/config.xml");         String name = config.getString("Account.name");         System.out.println("name:" + name);      }  }  

需要注意的是config.getString(“Account.name”)中的参数是Account.name,这个参数是XPath格式的,而且不能包含xml中的根元素。
使用到的config.xml内容如下:

<?xml version="1.0" encoding="gbk"?>         <Accounts>       <Account type="by0003">            <code>100001</code>           <pass>123</pass>           <name>李四</name>            <money>1000000.00</money>        </Account>    </Accounts>

2、读取properties文件

package com.styspace;  import org.apache.commons.configuration.Configuration;  import org.apache.commons.configuration.ConfigurationException;  import org.apache.commons.configuration.PropertiesConfiguration;  public class peropertiesLoaderTest {      public static void main(String[] args) throws ConfigurationException{         Configuration config = new PropertiesConfiguration("com/styspace/config.properties");         String name = config.getString("name");         System.out.println("name:" + name);      }  }  

使用到的config.properties文件内容如下:

threads.max=50threas.min=2  timout=15.52  interactive=true  color=red  speed=50  name=Default User

二、使用java.util.Properties读取

读取properties文件

package com.styspace;  import java.io.IOException;  import java.io.InputStream;  import java.util.Properties;  public class PropertiesTest {      public static void main(String[] args){          PropertiesTest pt = new PropertiesTest();          try {              pt.getProperties();          } catch (IOException e) {              // TODO Auto-generated catch block              e.printStackTrace();          }      }      private void getProperties() throws IOException {          InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream("com/styspace/config.properties");          System.out.println("begin!!!");          Properties properties = new Properties();          try{              properties.load(inputStream);          }catch (IOException ioE){              ioE.printStackTrace();          }finally{              inputStream.close();          }          System.out.println("name:"+properties.getProperty("name"));      }  }  

需要注意的是getClassLoader().getResourceAsStream()的参数是项目根目录下的路径,尽管config.properties是和该类文件在相同的目录下,但是不能写成getClassLoader().getResourceAsStream(“config.properties”),这样程序会报错,得到的InputStream是null值。

ClassLoader()和URLClassLoader()区别:ClassLoader()只能查找src目录下的文件,而URLClassLoader()则能查找任意目录下的文件。

三、spring中配置文件的读取

读取xml文件

1、ClassPathXmlApplicationContext:从类路径中加载。
2、FileSystemXmlApplicationContext:从文件系统加载。
3、XmlWebApplicationContext:从web系统中加载。

1、使用bean工厂获取bean

BeanFactory factory = null; //声明  ClassPathResource resource = new ClassPathResource("spring.xml");//类路径  factory= new XmlBeanFactory(resource);   FileSystemResource fileSystemResource = new FileSystemResource("D:\\Ncode\\mcode\\sday02\\src\\spring.xml");//文件路径  factory= new XmlBeanFactory(fileSystemResource);         /** XmlBeanFactory(参数可以是resource或者fileSystemResource等但是不能是 res 原因可以查看:文档Part III. Core Technologies 6. Resources 中6.2 The Resource interface 有关isOpen方法的说明);  **/InputStreamResource res = new InputStreamResource(new FileInputStream("D:\\Ncode\\mcode\\sday02\\src\\spring.xml"));//系统路径  HelloService helloService = factory.getBean("helloServiceImpl", HelloServiceImpl.class);  helloService.sayHello();

2、使用上下文(Context)

上下文更加高级:提供文本信息解析工具,包括对国际化支持;提供载入文件资源的通用方法,如图片;可以向注册为监听器的bean发送事件。
在很少的情况下,使用BeanFactory。

   //从文件系统      ApplicationContext context = new FileSystemXmlApplicationContext("file:D:\\Ncode\\mcode\\sday02\\src\\spring.xml");      //从类路径      ApplicationContext context = new ClassPathXmlApplicationContext("classpath:spring.xml");      HelloService helloService =  context.getBean("helloServiceImpl", HelloServiceImpl.class);      helloService.sayHello();

3、在web应用中使用

3.1、使用XmlWebApplicationContext

XmlWebApplicationContext context = new XmlWebApplicationContext();   //默认的路径/WEB-INF/applicationContext.xml  //applicationContext.xml文件名称 可以任意起  //重新设置路径  //context.setConfigLocations(new String[] {"/WEB-INF/classes/applicationContext.xml"});   //设置ServletContext上下下文为web应用程序的上下文  context.setServletContext(getServletContext());  //刷新  context.refresh();  //根据id名称获取  HelloDao helloDao = context.getBean("helloDaoImpl", HelloDaoImpl.class);  //执行helloDao对象的方法  helloDao.sayHello(); 

3.2、使用WebApplicationContextUtils工具类

//直接采用getWebApplicationContext(getServletContext()) 获取context对象  WebApplicationContext  context=   WebApplicationContextUtils.getWebApplicationContext(getServletContext());  //context = WebApplicationContextUtils.getRequiredWebApplicationContext(getServletContext());  System.out.println(context);  HelloDao helloDao = context.getBean("helloDaoImpl", HelloDaoImpl.class);  helloDao.sayHello()  

两者的区别是:
1、当采用getWebApplicationContext(getServletContext())获取context对象的时候,输出的context对象为null 所以在使用
context.getBean(“helloDaoImpl”, HelloDaoImpl.class);会出现空指针的异常
2、当采用getRequiredWebApplicationContext(getServletContext());获取context对象的时候 会出现如下bug
java.lang.IllegalStateException: No WebApplicationContext found: no ContextLoaderListener registered

转自:http://blog.csdn.net/stypace/article/details/38414871

阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 减数等于 减数分裂图 减数公式 什么是减数和被减数 减数被减数和差的公式 减数被减数差 被减数是 减数和被减数的位置 被减数和减数的区别 被减数减数差相加和是400 什么叫被减数和减数 减数被减数哪个在前面 被减数减减数等于差 什么是被减数和减数 减数被减数和差的口诀 什么是减数什么是被减数 减数分裂图解过程 减数分列过程图及图解 被减数是什么 有丝分裂与减数分裂 减数分裂过程图 什么是被减数 减数分裂染色体数目变化曲线 有丝分裂与减数分裂的异同 减数分裂后期 减数分裂和有丝分裂的区别 什么叫被减数 被减数是前面还是后面 被减数等于什么 求减数的公式 有丝分裂和减数分裂的区别 在减法算式中差一定比减数小 错位相减法 减法公式 减法口诀表 减法 减法口诀 有理数减法 减法人生 减法的性质 减法性质