0
プロパティを追加してリストのように扱う代わりに、プロパティファイルに存在する重複するキーを上書きすることができます。プロパティ。同じ問題を回避する方法はありますか?重複したプロパティキーを上書きすると、重複したプロパティキーが読み込まれます。apache common PropertyConfiguration
プロパティを追加してリストのように扱う代わりに、プロパティファイルに存在する重複するキーを上書きすることができます。プロパティ。同じ問題を回避する方法はありますか?重複したプロパティキーを上書きすると、重複したプロパティキーが読み込まれます。apache common PropertyConfiguration
デフォルトでは、Apache commonsのプロパティ設定では、プロパティファイルにある最初のキー値ペアのみが読み込まれます。私の知る限り、探しているプロパティはありません。この動作は、PropertiesConfigurationsがresolveContainerStore (キー)メソッド。デフォルトの実装では(値0)が値すなわち値= Array.getのリストから指定されたキーの見つかった最初の値を返します。この実装では、この
protected Object resolveContainerStore(String key)
{
Object value = getProperty(key);
if (value != null)
{
if (value instanceof Collection)
{
Collection collection = (Collection) value;
value = collection.isEmpty() ? null : collection.iterator().next();
}
else if (value.getClass().isArray() && Array.getLength(value) > 0)
{
value = Array.get(value, 0);
}
}
return value;
}
のようなものです。
最後にロードされたプロパティが返されるようにプロパティを上書きする必要がある場合は、デフォルトの実装をオーバーライドできます。上記の関数を実装しました。
@Override
protected Object resolveContainerStore(String key) {
Object value = getProperty(key);
if (value != null) {
if (value instanceof Collection) {
Collection collection = (Collection) value;
Iterator iterator = collection.iterator();
value = null;
while (iterator.hasNext()) {
value = iterator.next();
}
} else if (value.getClass().isArray() && Array.getLength(value) > 0) {
value = Array.get(value, Array.getLength(value) - 1);
}
}
return value;
}