2017-09-22 6 views

答えて

0

デフォルトでは、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; 
      }