`

configuration/ConfigurationFactory用法(pache.commons包下)

阅读更多

读取配置文件有很多种方法,现就最常用的方法作以下总结:(其他会慢慢更新)

configuration/ConfigurationFactory用法(pache.commons包下)

本文:org.apache.commons.configuration.configuration
其它:com.opensymphony.xwork2.config.configuration
            javax.security,auth.login.configuration
            net.sf.ehcache.config.configuration
            org.hibernate.cfg.configuration 等等,用方类同。


1.读取XML文件中内容
global.xml:
<?xml version="1.0" encoding="ISO-8859-1" ?>  
<engine-config>  
 
<start-criteria>  
  
<criteria>  
   Temperature Above -10 Celsius   
  
</criteria>  
  
<criteria>  
   Fuel tank is not empty   
  
</criteria>  
 
</start-criteria>  
 
<volume>4 Liters</volume>  
 
<horsepower>42</horsepower>  
</engine-config> 
读取:
import java.util.List;   
import org.apache.commons.configuration.Configuration;   
import org.apache.commons.configuration.XMLConfiguration;   
public class XmlConfigurationExample {   
 
public static void main(String[] args) throws Exception {   
  String resource 
= "com/discursive/jccook/configuration/global.xml";   
  Configuration config 
= new XMLConfiguration(resource);   
  
//只有new一个XMLConfiguration的实例就可以了.   
  List startCriteria = config.getList("start-criteria.criteria");   
  
int horsepower = config.getInt("horsepower");   
  System.out.println( 
"Start Criteria: " + startCriteria );   
  System.out.println(horsepower);   
 }
   
}

2.读取properties文件
global.properties:
threads.maximum=50   
threads.minimum=20   
timeout=15.52   
interactive=true  
color=red   
speed=50   
name=Default User   
email=default@email.com   
region=Earth  
读取:
import org.apache.commons.configuration.Configuration;   
import org.apache.commons.configuration.PropertiesConfiguration;   
public class PropertiesConfigurationExample {   
 
public static void main(String[] args) throws Exception  {   
  Configuration config 
= new PropertiesConfiguration(    
"com/discursive/jccook/configuration/global.properties" );   
     
  System.out.println( 
"Speed: " + config.getFloat("speed"));   
  System.out.println( 
"Names: " + config.getString("name"));   
  }
   
}

3.当有多个配置文件时,就利用ConfigurationFactory对象来访问多个不同的配置资源

ConfigurationFactory可以组合多个配置资源。然后我们就可以像访问单个资源文件一样来访问他们中的属性。

首先,我们需要创建一个xml文件来告诉工厂哪些文件将要被加载。

additional-xml-configuration.xml:

<?xml version="1.0" encoding="ISO-8859-1" ?>   
<configuration>   
  
<properties fileName="global.properties"/>   
  
<xml fileName="global.xml"/>   
</configuration>

方法1:ConfigurationFactory的定义文件是一个普通的xml文件.根元素是configuration.他饱含的子元素制定了需要装载

的配置资源.properties是元素之一,他用来包含属性文件

import java.net.URL;   
import java.util.List;   
import org.apache.commons.configuration.Configuration;   
import org.apache.commons.configuration.ConfigurationFactory;   
public class PropertiesXmlConfigurationExample {   
 
public static void main(String[] args) throws Exception {   
  PropertiesXmlConfigurationExample example 
= new PropertiesXmlConfigurationExample();   
  ConfigurationFactory factory 
= new ConfigurationFactory();   
  URL configURL 
= example.getClass().getResource("additional-xml-configuration.xml");   
  factory.setConfigurationURL( configURL );   
     
  Configuration config 
= factory.getConfiguration();   
     
  List startCriteria 
= config.getList("start-criteria.criteria");   
  System.out.println( 
"Start Criteria: " + startCriteria );   
     
  
int horsepower = config.getInt("horsepower");   
  System.out.println( 
"Horsepower: " + horsepower );   
 }
   
}

方法2:或者采用另外一种方法:  用到了:CompositeConfiguration,手动加上两个配置文件
import org.apache.commons.configuration.CompositeConfiguration;   
import org.apache.commons.configuration.ConfigurationException;   
import org.apache.commons.configuration.PropertiesConfiguration;   
import org.apache.commons.configuration.XMLConfiguration;   
public class Test {   
 
/** *//**  
  * 
@param args  
  * 
@throws ConfigurationException   
  
*/
  
 
public static void main(String[] args) throws ConfigurationException {   
  
// TODO Auto-generated method stub   
  CompositeConfiguration config = new CompositeConfiguration();   
  config.addConfiguration(
new PropertiesConfiguration(    
"com/discursive/jccook/configuration/global.properties" ));   
  config.addConfiguration( 
new XMLConfiguration   
(
"com/discursive/jccook/configuration/global.xml"));   
  List startCriteria 
= config.getList("start-criteria.criteria");   
  
int horsepower = config.getInt("horsepower");   
  System.out.println( 
"Start Criteria: " + startCriteria );   
  System.out.println(horsepower);   
     
  System.out.println( 
"Speed: " + config.getFloat("speed"));   
  System.out.println( 
"Names: " + config.getString("name"));   
 }
   
}


Spring的ClassPathXmlApplicationContext类(ApplicationContext接口)  JDK中的Properties 类(Java.util

1.读取XML文件中内容

(1)java bean (HelloBean.java)
package com.test;
public class HelloBean{
private String helloWorld;
public String getHelloWorld(){
return helloWorld;
 }

public void setHelloWorld(String helloWorld){
this.helloWorld = helloWorld;
 }

}
(2)xml配置文件(beanConfig.xml)
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd" >
<beans>
 
<bean id="helloBean" class="chb.demo.vo.HelloBean">
  
<property name="helloWorld">
   
<value>Hello!chb!</value>
  
</property>
 
</bean>
</beans>
(3)读取xml文件
<1>利用ClassPathXmlApplicationContext
ApplicationContext context = new ClassPathXmlApplicationContext("beanConfig.xml");
 HelloBean helloBean 
= (HelloBean)context.getBean("helloBean");
 System.out.println(helloBean.getHelloWorld());
<2>利用FileSystemResource读取
Resource rs = new FileSystemResource("D:/software/tomcat/webapps/springWebDemo/WEB-INF/classes/beanConfig.xml");
  BeanFactory factory 
= new XmlBeanFactory(rs);
  HelloBean helloBean 
= (HelloBean)factory.getBean("helloBean");
  System.out.println(helloBean.getHelloWorld());

2.读取properties文件

(1)HelloBean.java同上
(2).properties配置文件(beanConfig.properties)
helloBean.class=com.test.HelloBean
helloBean.helloWorld=Hello!chb!
(3)读取.properties文件
<1>利用spring读取properties 文件
属性文件中的"helloBean"名称即是Bean的别名设定,.class用于指定类来源。
然后利用org.springframework.beans.factory.support.PropertiesBeanDefinitionReader来读取属性文件
BeanDefinitionRegistry reg = new DefaultListableBeanFactory();
  PropertiesBeanDefinitionReader reader 
= new PropertiesBeanDefinitionReader(reg);
  reader.loadBeanDefinitions(
new ClassPathResource("beanConfig.properties"));
  BeanFactory factory 
= (BeanFactory)reg;
  HelloBean helloBean 
= (HelloBean)factory.getBean("helloBean");
  System.out.println(helloBean.getHelloWorld());
<2>利用java.util.Properties读取属性文件
  InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream("beanConfig.properties");
  Properties p 
= new Properties();
  
try {
   p.load(inputStream);
  }
 catch (IOException e1) {
   e1.printStackTrace();
  }

System.out.println(
"class:"+p.getProperty("helloBean.class")+",value:"+p.getProperty("helloBean.helloWorld"));
分享到:
评论

相关推荐

    Java封装Configuration

    \test\home\etc\conf\app-config.xml &lt;configuration&gt; ... ConfigurationFactory factory = new ConfigurationFactory(configFile); this.conf = factory.getConfiguration(); this.buildFactory(); }

    dropwizard-environment-config:Dropwizard ConfigurationFactory 允许将环境变量指定为 YAML 中的值

    Dropwizard ConfigurationFactory 允许将环境变量指定为 YAML 中的值。 设置 首先将依赖项添加到您的 pom: &lt; groupId&gt;de.thomaskrille.dropwizard&lt;/ groupId&gt; &lt; artifactId&gt;dropwizard-environment-...

    setuptools-41.0.0-py2.py3-none-any.whl

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    Google Cloud Storage(使用gsutil下载)

    Google Cloud CLI安装包GoogleCloudSDKInstaller.exe

    setuptools-18.3.zip

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    罗兰贝格_xx业务计划与控制体系最终报告gltp.pptx

    罗兰贝格_xx业务计划与控制体系最终报告gltp.pptx

    基于JSP医院在线挂号管理系统源码.zip

    这个是一个JSP医院在线挂号管理系统,管理员角色包含以下功能:管理员登录,医生用户管理,修改密码,科室类别信息管理,医生信息管理,添加医生信息,查询医生信息,注册用户管理,黑名单管理,预约信息管理,查询预约信息,医生预约查询,预约信息统计,科室汇总统计等功能。患者角色包含以下功能:查看首页,患者登录,修改密码,修改个人资料,查看预约信息,查看医生信息,查看科室分类,医生查询,预约医生等功能。… 本项目实现的最终作用是基于JSP医院在线挂号管理系统 分为4个角色 第1个角色为管理员角色,实现了如下功能: - 修改密码 - 医生信息管理 - 医生用户管理 - 医生预约查询 - 查询医生信息 - 查询预约信息 - 注册用户管理 - 添加医生信息 - 科室汇总统计 - 科室类别信息管理 - 管理员登录 - 预约信息管理 - 预约信息统计 - 黑名单管理

    麦肯锡-年月―中国xx集团战略咨询项目建议书gltp.pptx

    麦肯锡-年月―中国xx集团战略咨询项目建议书gltp.pptx

    公开整理-各省碳排放数据集(1990-2022年).xlsx

    详细介绍及样例数据:https://blog.csdn.net/li514006030/article/details/138872006

    Screenshot_2024-05-14-22-47-39-925_com.alibaba.android.rimet.hznu.jpg

    Screenshot_2024-05-14-22-47-39-925_com.alibaba.android.rimet.hznu.jpg

    基于Python+Flask弹幕情感分析的直播高光时刻判断模型设计与系统实现+系统功能说明+全部资料齐全+部署文档.zip

    【资源说明】 基于Python+Flask弹幕情感分析的直播高光时刻判断模型设计与系统实现+系统功能说明+全部资料齐全+部署文档.zip基于Python+Flask弹幕情感分析的直播高光时刻判断模型设计与系统实现+系统功能说明+全部资料齐全+部署文档.zip 【备注】 1、该项目是个人高分项目源码,已获导师指导认可通过,答辩评审分达到95分 2、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 3、本项目适合计算机相关专业(人工智能、通信工程、自动化、电子信息、物联网等)的在校学生、老师或者企业员工下载使用,也可作为毕业设计、课程设计、作业、项目初期立项演示等,当然也适合小白学习进阶。 4、如果基础还行,可以在此代码基础上进行修改,以实现其他功能,也可直接用于毕设、课设、作业等。 欢迎下载,沟通交流,互相学习,共同进步!

    Vue开发基于Vue + Node的外卖系统设计与实现【源码+lw+部署文档+讲解】

    内容概要:这个项目是基于Vue.js和Node.js的外卖系统的设计与实现,旨在帮助开发者通过实践掌握Vue.js和Node.js的应用,并了解外卖系统的开发流程和技术选型。该系统旨在提供一个完整的在线订餐平台,包括用户注册登录、浏览商家和菜单、下单支付、配送跟踪等功能,以提升用户的订餐体验。源码包含了前端Vue.js和后端Node.js的代码,部署文档详细介绍了系统的部署步骤和环境配置要求,讲解内容涵盖了系统的功能模块、技术选型理由、设计思路以及使用方法。 适合人群:对Vue.js和Node.js有一定了解,并希望通过实践项目提升技能的开发者。 能学到什么:①掌握Vue.js和Node.js的开发流程;②了解外卖系统的业务逻辑和实现方法;③学习前后端分离的开发模式;④了解部署和维护一个完整项目的流程。 阅读建议:本资源旨在帮助开发者通过实践项目掌握Vue.js和Node.js的应用,并了解外卖系统的开发流程。建议在学习过程中结合部署文档进行实践,并深入理解讲解内容中的技术原理和设计思路。同时,鼓励开发者根据实际需求对项目进行拓展和优化,以提升自己的技术水平。

    基于SSM+jsp的家居商城系统

    大学生毕业设计、大学生课程设计作业

    python企业编码管理的程序(可执行程序+源码).zip

    具体的操作步骤如下: (1)生成6位数字防伪编码。当用户在主程序界面中输入数字“1”菜单项时,将进入“生成6位数字防伪编码 (213563型)”的功能执行任务。此时要求输入生成防伪码的数量,可以根据需要输入生成防伪码的数量,如图2所示。按下<Enter>键,开始批量生成防伪码,生成后系统将提示用户生成了多少个注册码和生成文件的位置信息等,如图3所示。单击“确定”按钮,关闭提示信息。在屏幕上可以看到生成的防伪码信息,如图4所示。生成的文件在程序所在目录下的“codepath”文件夹下,名称为“scode1.txt”,如图5所示。

    Centos7-离线安装redis

    Centos7-离线安装redis

    基于JSP鲜花商城网站系统源码.zip

    这个是一个JSP鲜花商城网站系统,用户角色包含以下功能:用户登录与注册,修改个人信息,查看首页,查看分类,查看热销,查看订单,查看鲜花详情,加入购物车,提交订单等功能。管理员角色包含以下功能:订单管理,客户信息管理,鲜花管理,鲜花类目管理,管理员登录等功能。

    setuptools-3.5.1-py2.py3-none-any.whl

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    备自投动作不成功事故处理tp.pptx

    备自投动作不成功事故处理tp.pptx

    基于JSP户籍管理系统源码.zip

    这个是一个JSP户籍管理系统,管理员角色包含以下功能:管理员登陆,户籍管理,迁入管理,迁出管理,反馈投诉管理等功能。用户角色包含以下功能:用户登陆,户籍信息查看,迁入查询,反馈建议等功能。 本项目实现的最终作用是基于JSP户籍管理系统 分为2个角色 第1个角色为管理员角色,实现了如下功能: - 反馈投诉管理 - 户籍管理 - 管理员登陆 - 迁入管理 - 迁出管理 第2个角色为用户角色,实现了如下功能: - 反馈建议 - 户籍信息查看 - 用户登陆 - 迁入查询

    setuptools-36.4.0-py2.py3-none-any.whl

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

Global site tag (gtag.js) - Google Analytics