2

ドメイン クラスの一部のフィールドにデフォルト値を設定できるようにしたいと考えています。これまで、プロジェクト全体の設定のマップを格納するクラスがあり、このマップを redis データベースに移動するタスクを念頭に置いていました。その日が来て、すべてのデータを redis に移動し、値を取得/設定する素敵な Spring Bean を作成しました。ただし... beanが注入される前に、ドメインクラスインスタンスにデフォルト値が設定されているようです。この種のものは、プロセス全体を壊します。また...単体テストに問題があります。Spring Bean と同じインターフェースを実装し、テスト値を保持するクラスを作成しました。ドメインクラスに注入したかったのですが、これも失敗します。

そのため、現在、単体テストを実行できるドメインクラスの外部に保存されたデフォルト値を処理する良い方法を見つけようとしています。何かご意見は?

4

2 に答える 2

0

あなたが取ることができるいくつかの異なるアプローチがあります:

  • 以前と同じ方法で提供されるように、デフォルト値を持つ別の Bean を導入します。別のより高いレベルのコンテキストで、または後でアプリケーションの起動時に、Bean 定義をデータベースからプルするものでオーバーライドできます。
  • BeanPostProcessor または BeanFactoryPostProcessor を使用してデフォルト値を指定してから、新しい Bean を使用して新しい値を取得します

これらの回答のどちらも役に立たない場合は、セットアップとサンプル コードを投稿して、何をしようとしているのかをより明確に把握できるようにしてください。

于 2011-11-25T17:48:11.507 に答える
0

最後にしたこと: Redis に接続し、必要なすべてのデータを取得するクラスを作成しました。単体テストのために、このクラスのコピーを作成しました。これは同じインターフェイスを実装していますが、Redis からデータを取得する代わりに、内部に単純な Map があり、そこからデータを取得します。最終的には同じように動作しますが、データは内部に保存されます。したがって、単体テストでは、このクラスのこの単体テスト バージョンを適切な場所に挿入するだけです。

おそらく最善の解決策ではありませんが、ここ数か月はうまくいきました。

于 2011-11-26T11:28:07.093 に答える