Apache Commons:简单的使用Configuration读取和修改配置文件
Posted 你是小KS
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Apache Commons:简单的使用Configuration读取和修改配置文件相关的知识,希望对你有一定的参考价值。
1. 声明
当前内容主要为本人学习和使用Apache Commons Configuration来操作
当前内容参考:apache commons 官方文档
主要内容为:
- 读取和操作properties配置文件
- 读取和操作xml配置文件
基本pom依赖(configuration依赖beanutils)
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-configuration2</artifactId>
<version>2.7</version>
</dependency>
<!-- https://mvnrepository.com/artifact/commons-beanutils/commons-beanutils -->
<dependency>
<groupId>commons-beanutils</groupId>
<artifactId>commons-beanutils</artifactId>
<version>1.9.4</version>
</dependency>
2. 读取和操作properties配置文件demo
准备的db.properties文件
mysql.url=jdbc:mysql://localhost:3306/test
mysql.username=root
mysql.password=root
mysql.driverClassName=com.mysql.jdbc.Driver
demo
public static void main(String[] args) {
Configurations configs = new Configurations();
loadAndModifyFromProperties(configs); // 加载和修改xml的配置文件
}
/**
*
* @author hy
* @createTime 2021-06-20 14:47:12
* @description 实现配置文件的数据的获取和配置文件的更新
*
*/
private static void loadAndModifyFromProperties(Configurations configs) {
// 默认直接读取类路径下的配置文件
try {
// 这个properties只是读取的操作(不能执行更新操作)
// Configuration config = configs.properties(new File("db.properties"));
// 采用这个builder方式就可以实现修改配置文件的操作了
FileBasedConfigurationBuilder<PropertiesConfiguration> builder = configs.propertiesBuilder(new File("db.properties"));
// FileBasedConfigurationBuilder<PropertiesConfiguration> builder = configs.fileBasedBuilder(PropertiesConfiguration.class, );
Configuration config = builder.getConfiguration();
// 输出元素
printElements(config);
// 更新配置文件
config.setProperty("mysql.username", "abc");
// config.addProperty("mysql.timeout", "10");
// 保存配置文件
builder.save();
} catch (ConfigurationException cex) {
// Something went wrong
cex.printStackTrace();
}
}
/**
*
* @author hy
* @createTime 2021-06-20 14:51:07
* @description 打印当前的元素
* @param config
*
*/
private static void printElements(Configuration config) {
Iterator<String> keys = config.getKeys();
while (keys.hasNext()) {
String key = keys.next();
String value = config.getString(key);
System.out.println("key=" + key + ",value=" + value);
}
}
执行的结果:
3. 读取和修改xml配置文件
准备的db.xml配置文件
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<dbs>
<db type="mysql">
<driverClassName>com.mysql.jdbc.Driver</driverClassName>
<username>root</username>
<password>root</password>
<url>jdbc:mysql://localhost:3306/test</url>
</db>
<db type="sqlserver">
<username>sa</username>
<password>111111</password>
</db>
</dbs>
</configuration>
demo
public static void main(String[] args) {
Configurations configs = new Configurations();
loadAndModifyFromXml(configs); // 加载和修改xml的配置文件
}
/**
*
* @author hy
* @createTime 2021-06-20 14:51:07
* @description 打印当前的元素
* @param config
*
*/
private static void printElements(Configuration config) {
Iterator<String> keys = config.getKeys();
while (keys.hasNext()) {
String key = keys.next();
String value = config.getString(key);
System.out.println("key=" + key + ",value=" + value);
}
}
private static void loadAndModifyFromXml(Configurations configs) {
try {
// 只能提供读取服务
// Configuration config = configs.xml(new File("db.xml"));
FileBasedConfigurationBuilder<XMLConfiguration> builder = configs.xmlBuilder(new File("db.xml"));
Configuration config = builder.getConfiguration();
printElements(config);
// 开始修改当前的xml中的元素
config.setProperty("dbs.db.username", "abc");
config.addProperty("dbs.db.timeout", "50");
builder.save();
} catch (ConfigurationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
执行结果:(和前面一致,导致节点type=sqlserver的没有读取出来
)
所以这里需要将当前的db标签变成sqlserver和mysql标签
,这样就不会出现读取和写出的问题,保证properties的唯一性
以上是关于Apache Commons:简单的使用Configuration读取和修改配置文件的主要内容,如果未能解决你的问题,请参考以下文章
Apache Commons:简单的使用Configuration读取和修改配置文件
Apache Commons:CLi的简单的使用(创建mysql的访问器)
如何在没有 IDE 的情况下使用 Apache Commons Lang 代码? (org.apache.commons.lang3)