POCO应用程序配置管理
Poco::AbstractConfiguration及其子类是Poco提供的操作配置文件的接口,这组接口将配置文件抽象为名值对。Poco::Util::Application实现了自动寻找配置文件并加载配置文件的功能,使用时有三个要点:
(1)写一个与应用程序同名的配置文件放在软件的启动目录中
(2)重载Application::initialize(Application & self),在其中调用loadConfiguration(),如下
protected:
voidinitialize(Application& self)
{
loadConfiguration(); // load default configuration files, if present
Application::initialize(self);
}
(3)在使用配置文件的位置通过Application::config()获取加载的配置文件,如下
#include"Poco/Util/Application.h"
//
Poco::Util::AbstractConfiguration & config(Poco::Util::Application::instance().config());
config.getString("key", "value");
Poco中有关配置管理的类型如下图所示:
其中,AbstractConfiguration是基类,提供以下方法:createView, enumerate, expand, getBool, getDouble, getInt, getRaw, getRawString, getString, hasOption, hasProperty, keys, parseBool, parseInt, setBool, setDouble, setInt, setRaw, setString,具体类实现如下功能:
-
IniFileConfiguration ini文件
-
XMLConfiguration xml文件
-
FilesystemConfiguration 将每个数据保存在一个文件中,用目录树管理配置
-
PropertyFileConfiguration 处理Java的property文件
-
SystemConfiguration 提供操作系统的版本号及环境变量
-
MapConfiguration 这是一个具体实现,把(key, value)保存在map中
-
WinRegistryConfiguration操作Windows系统的注册表
以下adapter类提供灵活的使用以上具体类功能的策略
-
ConfigurationMapper 将一个配置树映射到另一个配置树下
-
LayeredConfiguration将多个配置树叠加在一起,根据优先级从中选择配置
-
ConfigurationView 从一个配置树中截取出一部分,是对配置树的一个视图