`

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(); }

    springboot集成ckfinder3.5.1

    创建一个名为`CkfinderController`的类,导入必要的包,并实现CKFinder的初始化方法。以下是一个简单的示例: ```java import com.ckfinder.connector.Connector; import ...

    spring操作hbase demo

    &lt;bean id="hbaseConfiguration" class="org.apache.hadoop.hbase.conf.ConfigurationFactory" factory-method="getConfiguration"&gt; &lt;property name="configuration"&gt; &lt;prop key="hbase.zookeeper.quorum"&gt;your_...

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

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

    大数据处理领域:Elasticsearch的高级应用及优化技巧

    内容概要:Elasticsearch是一款强大且灵活的搜索和数据分析工具。文中介绍了其核心技术如分布式存储、实时搜索、全文检索、数据分析等。通过对基础概念的学习,如索引、文档、类型、映射的理解,结合实战案例解析,重点展示了Elasticsearch在电商业务商品搜索引擎构建以及高效日志管理系统部署方面的实际运用方法和技术细节。此外,围绕性能优化展开了讨论,强调了诸如合理的分片和副本配置、有效运用内部缓存机制和精心规划集群资源配置等一系列措施的重要性。 适合人群:从事IT行业的中级及以上技术水平从业者,尤其是那些负责大数据处理、分布式系统的架构师及工程师。 使用场景及目标:①希望掌握利用Elasticsearch快速实现高效的搜索与分析应用的方法论和技术路径;②旨在通过实例学习到针对不同应用场景(如电商网站、日志分析)如何正确配置系统参数、优化集群表现,进而达成更好的用户体验或运营效率;③寻求提升系统稳定性、可靠性并解决可能出现的问题。 其他说明:本文不仅仅讲述了理论知识,还有详实的具体操作指南,帮助读者在实践中深入理解Elasticsearch的能力,并鼓励他们在自己的项目中积极探索更

    基于Matlab的双三方演化博弈与Lotka-Volterra模型稳定点分析、相位图绘制与仿真代码实现,基于Matlab的双三方演化博弈与Lotka-Volterra模型:稳定点分析、相位图绘制与仿真

    基于Matlab的双三方演化博弈与Lotka-Volterra模型稳定点分析、相位图绘制与仿真代码实现,基于Matlab的双三方演化博弈与Lotka-Volterra模型:稳定点分析、相位图绘制与仿真代码实践,matlab:双或三方演化博弈,lotka-Volterra 1.双方演化博弈:代分析稳定点分析,代绘制相位图,matlab仿真图代码 2.三方演化博弈:代分析稳定点分析,代绘制相位图,matlab仿真图代码3.lotka-Volterra模型 ,核心关键词:Matlab; 双或三方演化博弈; 稳定点分析; 相位图; 仿真图代码; Lotka-Volterra模型,MATLAB仿真:双三方演化博弈与Lotka-Volterra模型的稳定点分析与相位图绘制

    基于词袋模型及神经网络的文本分类算法新版源码+说明+数据

    【资源介绍】 1、该资源包括项目的全部源码,下载可以直接使用! 2、本项目适合作为计算机、数学、电子信息等专业的课程设计、期末大作业和毕设项目,也可以作为小白实战演练和初期项目立项演示的重要参考借鉴资料。 3、本资源作为“学习资料”如果需要实现其他功能,需要能看懂代码,并且热爱钻研和多多调试实践。 基于词袋模型及神经网络的文本分类算法新版源码+说明+数据.zip 基于词袋模型及神经网络的文本分类算法新版源码+说明+数据.zip 基于词袋模型及神经网络的文本分类算法新版源码+说明+数据.zip 基于词袋模型及神经网络的文本分类算法新版源码+说明+数据.zip 基于词袋模型及神经网络的文本分类算法新版源码+说明+数据.zip 基于词袋模型及神经网络的文本分类算法新版源码+说明+数据.zip 基于词袋模型及神经网络的文本分类算法新版源码+说明+数据.zip 基于词袋模型及神经网络的文本分类算法新版源码+说明+数据.zip 基于词袋模型及神经网络的文本分类算法新版源码+说明+数据.zip 基于词袋模型及神经网络的文本分类算法新版源码+说明+数据.zip 基于词袋模型及神经网络的文本分类算法新版源码+说明+数据.zip 基于词袋模型及神经网络的文本分类算法新版源码+说明+数据.zip

    【车间调度】基于matlab人工蜂群算法ABC求解分布式置换流水车间调度DPFSP【含Matlab源码 6166期】.mp4

    海神之光上传的视频是由对应的完整代码运行得来的,完整代码皆可运行,亲测可用,适合小白; 1、从视频里可见完整代码的内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,私信博主; 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可私信博主; 4.1 博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作

    【多普勒雷达】基于matlab风力涡轮机多普勒雷达仿真模型【含Matlab源码 9813期】.mp4

    海神之光上传的视频是由对应的完整代码运行得来的,完整代码皆可运行,亲测可用,适合小白; 1、从视频里可见完整代码的内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,私信博主; 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可私信博主; 4.1 博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作

    COMSOL模拟放电电极击穿空气过程:电场分布与击穿间隙电压计算分析,COMSOL模拟放电电极击穿空气过程:电场分布与击穿间隙电压计算分析,comsol放电电极击穿空气模拟,计算击穿间隙的电压,周围附

    COMSOL模拟放电电极击穿空气过程:电场分布与击穿间隙电压计算分析,COMSOL模拟放电电极击穿空气过程:电场分布与击穿间隙电压计算分析,comsol放电电极击穿空气模拟,计算击穿间隙的电压,周围附近的电场 ,关键词:COMSOL放电电极;击穿空气模拟;计算;击穿间隙电压;周围附近电场;电场分布。,COMSOL模拟放电电极击穿空气过程,计算电压与电场分布分析

    高压柔性输电系统:6脉冲与12脉冲晶闸管控制的HVDC仿真模型详细说明文档,高压柔性输电系统:6脉冲与12脉冲晶闸管控制的HVDC仿真模型详解说明文档,高压柔性输电系统6脉冲,12脉冲晶闸管控制HVD

    高压柔性输电系统:6脉冲与12脉冲晶闸管控制的HVDC仿真模型详细说明文档,高压柔性输电系统:6脉冲与12脉冲晶闸管控制的HVDC仿真模型详解说明文档,高压柔性输电系统6脉冲,12脉冲晶闸管控制HVDC的仿真模型,说明文档 ,高压柔性输电系统; 6脉冲HVDC; 12脉冲晶闸管控制; 仿真模型; 说明文档,高压柔性输电系统仿真模型:6/12脉冲晶闸管控制HVDC说明文档

    【故障诊断】基于matlab稀疏包络谱分析多通道数据驱动的BRB故障诊断【含Matlab源码 9922期】.mp4

    海神之光上传的视频是由对应的完整代码运行得来的,完整代码皆可运行,亲测可用,适合小白; 1、从视频里可见完整代码的内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,私信博主; 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可私信博主; 4.1 博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作

    通过复杂的文本对齐和运动感知一致性进行内容丰富的AIGC视频质量评估

    近年来,文本驱动的视频生成 (Brooks 等人 2024;Hunyuan 2024) 取得了显著增长。然而,评估这些文本驱动的AI生成视频带来了独特且日益严峻的挑战。这些挑战主要源于两个关键问题:(1)需要精确的视频与文本对齐,特别是在处理复杂和长文本提示时;(2)出现了一些在自然生成视频中不常见的独特失真现象,例如不规则运动模式和物体。 随着新一代视频模型的发展,这些挑战变得更加突出。这些新一代模型以 Sora (Brooks 等人 2024) 的出现为标志,在生成质量上相比以往模型有了显著提升,其特点在于丰富的细节和内容,如 Kling (快手 2024) 、Gen-3-alpha (Runway 2024) 、Vidu (圣书 2024) 等。与之前的 AIGC 视频相比,这些模型支持 更长且更复杂的文本提示(通常超过200个字符),以及更复杂的运动模式和更长的持续时间(通常超过5秒,帧率为24帧每秒) 。如图 [fig:1] 所示,这些丰富的内容对评估者的理解视频动态及其与复杂文本语义关系的能力提出了更高的要求。 为了应对这一问题,我们引入了 Conten

    B站黑马程序员第二章08-字符串的三种定义方式(个人笔记)

    在B站看黑马程序员,自学python,整理的个人笔记

    传统永磁同步电机FOC离散化Simulink模型实践指南:高效性能与传递函数离散化推导文档附赠,传统永磁同步电机FOC离散化Simulink模型实战解析及传递函数离散化推导入门指南,传统永磁同步电机的

    传统永磁同步电机FOC离散化Simulink模型实践指南:高效性能与传递函数离散化推导文档附赠,传统永磁同步电机FOC离散化Simulink模型实战解析及传递函数离散化推导入门指南,传统永磁同步电机的FOC离散化simulink模型,效果较好。 附赠传递函数离散化推导的文档,初学者可以入手。 ,传统永磁同步电机; FOC离散化; Simulink模型; 传递函数离散化; 推导文档。,FOC离散化Simulink模型:永磁同步电机高效控制与传递函数离散化解析

    创业者必备:解读DeepSeek引发的AI技术与应用革新

    内容概要:本文由360集团创始人周鸿祎撰写,深入探讨了DeepSeek这一前沿AI技术及其对各行各业所带来的巨大机遇。文中详细阐述了人工智能的发展历程,特别是大模型的演进,并指出了DeepSeek如何在技术和用户体验方面取得重大突破,引领新的工业革命,以及中国在该领域的创新和发展前景。同时介绍了如何借助DeepSeek实现具体的企业应用,涵盖知识库建设、智能体开发等多个方面的实践经验。 适用人群:针对政府机构、企业和创新创业者的高级管理层和技术领导者,旨在提供对当前AI前沿技术和未来发展策略的理解。 使用场景及目标:适用于希望通过先进技术提升竞争力的单位或个人;目的在于引导读者建立正确的AI意识,了解最新的技术动向和实施路径,为未来的战略规划打下坚实的基础。 其他说明:文档还强调了在全球范围内争夺大模型主导地位的竞争环境下,中国企业应该如何抓住机遇实现快速发展,以及如何克服现有挑战,确保安全可靠的应用。

    软件测试基础(功能测试)笔记

    APP测试基础流程

    建设工程管理数字孪生平台解决方案.docx

    建设工程管理数字孪生平台解决方案.docx

    【车间调度】基于matlab沙猫群算法SCSO求解零空闲流水车间调度问题NIFSP【含Matlab源码 7974期】.mp4

    海神之光上传的视频是由对应的完整代码运行得来的,完整代码皆可运行,亲测可用,适合小白; 1、从视频里可见完整代码的内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,私信博主; 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可私信博主; 4.1 博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作

    串口助手,可以调整串口接收数据大小,颜色文字。显示接收时间。

    串口助手

Global site tag (gtag.js) - Google Analytics