如何使用 Apache Commons Configuration2 从 InputStream 读取数据?
FileBasedConfigurationBuilder<XMLConfiguration> builder =
new FileBasedConfigurationBuilder<XMLConfiguration>(XMLConfiguration.class)
.configure(
new Parameters()
.xml()
.setFileName("")
.setExpressionEngine(new XPathExpressionEngine())
);
XMLConfiguration config = builder.getConfiguration();
config.read(sourceJarFile.getInputStream(sourcePropertiesEntry))
Run Code Online (Sandbox Code Playgroud)
给出上面的代码,如果 setFileName 为空字符串,我将得到以下异常。
org.apache.commons.configuration2.ex.ConfigurationException: Could not locate: org.apache.commons.configuration2.io.FileLocator@61dc03ce[fileName=tmp.xml,basePath=<null>,sourceURL=,encoding=<null>,fileSystem=<null>,locationStrategy=<null>]
at org.apache.commons.configuration2.io.FileLocatorUtils.locateOrThrow(FileLocatorUtils.java:346)
at org.apache.commons.configuration2.io.FileHandler.load(FileHandler.java:972)
at org.apache.commons.configuration2.io.FileHandler.load(FileHandler.java:702)
at org.apache.commons.configuration2.builder.FileBasedConfigurationBuilder.initFileHandler(FileBasedConfigurationBuilder.java:312)
at org.apache.commons.configuration2.builder.FileBasedConfigurationBuilder.initResultInstance(FileBasedConfigurationBuilder.java:291)
at org.apache.commons.configuration2.builder.FileBasedConfigurationBuilder.initResultInstance(FileBasedConfigurationBuilder.java:60)
at org.apache.commons.configuration2.builder.BasicConfigurationBuilder.createResult(BasicConfigurationBuilder.java:421)
at org.apache.commons.configuration2.builder.BasicConfigurationBuilder.getConfiguration(BasicConfigurationBuilder.java:285)
at com.test.installer.App.getXMLConfigurationProperties(App.java:185)
Run Code Online (Sandbox Code Playgroud)
如果我给 null 或只是不调用 setFileName(); 我将在 read() 行获得无法加载配置异常。
org.apache.commons.configuration2.ex.ConfigurationException: Unable to load the configuration
at org.apache.commons.configuration2.XMLConfiguration.load(XMLConfiguration.java:986)
at org.apache.commons.configuration2.XMLConfiguration.read(XMLConfiguration.java:954)
at com.test.installer.App.updateExistedProperties(App.java:84)
Run Code Online (Sandbox Code Playgroud) 我正在使用Apache Commons配置.如何在不将其保存到文件的情况下直接获取XMLConfiguration的字符串?
非常感谢你.
有人可以对普通配置(apache常用配置)有所了解吗?如果有人可以用一些用例解释它,他会有所帮助.
此外,我可以从中获得一些有用信息的任何链接(谷歌除外)非常感谢.
我正在使用Archaius来保持托管我的应用程序的所有服务器之间的系统属性.我可以看到所有属性getter都可以在该属性发生变化时调用回调(例如,参见第三个参数getStringProperty()),但我想监听任何属性更改.我可以实现一些接口并在某处注册为监听器吗?
我正在使用 Apache Commons 配置库来存储我的应用程序属性。我可以使用它来监视属性文件的更改FileChangedReloadingStrategy,并且它工作得很好。我想做的是在属性文件更改时触发configurationChanged事件。ConfigurationListener
如果我尝试从我的代码中获取属性,则这种情况有效
directory = MyConfiguration.getInstance().getString("directory");
Run Code Online (Sandbox Code Playgroud)
这条线将触发configurationChanged。但我需要在捕获文件中的更改时触发此事件FileChangedReloadingStrategy而不进行冗余调用。
谢谢。
我能够转换org.apache.commons.configuration.Configuration为java.util.Properties使用:
Properties props = new Properties();
Configuration config = new PropertiesConfiguration(fileName);
Iterator iter = config.getKeys();
while (iter.hasNext()) {
String key = (String) iter.next();
String value = config.getString(key);
props.put(key, value);
}
Run Code Online (Sandbox Code Playgroud)
假设:键和值是String类型.
有没有直接的转换Configuration方式Properties?