6

ユーザーが任意の数のオブジェクトのリストを保存/ロードできるようにする必要があります (それらがシリアライズ可能であると仮定します)。概念的には、次のようなデータモデルが必要です

class FooBean { /* bean stuff here */ }

class FooList {
    final private Set<FooBean> items = new HashSet<FooBean>();

    public boolean add(FooBean item) { return items.add(item); }
    public boolean remove(FooBean item) { return items.remove(item); }
    public Collection<FooBean> getItems() { 
       return Collections.unmodifiableSet(items); 
    }
}

class FooStore {
    public FooStore() {
       /* something... uses Preferences or Commons Configuration */ 
    }
    public FooList load(String key) {
       /* something... retrieves a FooList associated with the key */ 
    }
    public void store(String key, FooList items) { 
       /* something... saves a FooList under the given key */
    }
}

Preferences APIまたはCommons Configを使用する必要がありますか? それぞれの利点は何ですか?

4

4 に答える 4

6

さて、commons-configuration は、多くの apache プロジェクトと同様に、プリファレンス、ldap ストア、プロパティ ファイルなどを一見したように使用できるようにする抽象化レイヤーです。したがって、あなたの質問はそのまま書き直すことができます: 設定を保存するために使用する形式を変更する必要がありますか? いいえの場合は、Java 設定を使用することをお勧めします。他の場所では、コモンズ構成の移植性を検討してください。

于 2010-03-08T15:35:13.740 に答える
2

キーに関連付けられた一連の値を保存する例を考えると、各ライブラリを使用するときに次のオプションがあるようです

  • 設定 - キーに関連付けられたバイト配列として保存
  • Commons Configuration - キーに関連付けられた文字列のリストとして保存

したがって、選択は、FooBean をバイト配列または文字列に変換する方が簡単かどうかに帰着する可能性があります。

Commons Configuration のもう 1 つの利点は、さまざまなバックエンドです。プロパティをデータベースに保存するために使用しました。ユーザーのローカル マシン以外の場所にオブジェクトを保存する場合は、それが適切な選択です。

于 2010-03-08T22:19:46.360 に答える
1

Commons Configuration は、複雑なオブジェクト構造の保存には適していません。シリアル化フレームワークを使用することをお勧めします。

于 2010-11-30T21:13:08.717 に答える
1

commons-config によって解決される問題がない限り、通常は JDK の一部である Preferences API を使用します。

個人的に私がSpringを使用するとき、私のためにこれらのほとんどを行うProperty Configurerがあります。

于 2010-03-08T15:24:01.650 に答える