このスレッドに似ていますが、正確ではありません:スレッドセーフな方法で情報をキャッシュする方法
「参照データ」を処理するための通常のパターンは何ですか?アプリケーションによって頻繁に読み取られ、通常はデータベースまたはプロパティファイルで外部化されますが、更新頻度は非常に低い(日、週、月)データですか?データが更新されると、外部で更新されます。
これは通常、DAOを注入して、独自のコンテンツを管理できるシングルトンでしょうか?このサービスでrefresh()メソッドを公開して、強制的に更新する(つまり、MBeanを介して)というアイデアが好きです。したがって、アプリケーションをバウンスする必要はありません。
他のSOスレッドからは、必要に応じてDAOをインスタンス化し、そのレベルで透過的にキャッシュする可能性があるようです。
私は、シングルトンサービスに、データベースからデータをロードする実際のDAO、またはハードコードされた応答を返すモック/テストダブルのいずれかが注入されるというアイデアが好きです。ただし、Java列挙型を介してサービスをシングルトンとして実装する場合、これにより、Springを介してサービスを接続するのが少し問題になります。
では、他の人は通常、参照データをどのように扱いますか?随意にクエリを実行しますが、キャッシュを隠蔽しますか?または別のメモリ内サービス?