これが、DB/XMLから読み取った構成データオブジェクトであるとします。
class ConfigurationClass{
//some configurations
public String getString(){
}
}
これが、この構成オブジェクトを使用するクラスです。
class ConfigurationUser implements Reloadable{
private ConfigurationClass configuration;
//some extra logic required for making object ready to use
public void init(){
// some new object is created based on configuration
SomeObject obj = new SomeObject(configuration.getString());
//register to configuration manager
}
@Override
public void reload(){
//does whole reloading stuff
//creates a new instance of configuration class and reads new configuration which is not appropriate
}
}
ここで、構成をリロードする必要がある場合、の新しいインスタンスを作成し、それをクラスConfigurationClass
に注入するとします。ConfigurationUser
ただし、新しい構成に依存するオブジェクトを作成できるように、オブジェクトを再初期化する必要もあります。
これはそれを行うための適切な設計ですか、それともより良いアプローチがありますか?DIにSpringまたはGoogleJuiceを使用することを考えましたが、構成が再ロードされた構成ユーザークラスにコールバックを提供する必要があります。
私はIoCコンテナを初めて使用するので、それが可能かどうかわかりません。これをリアルタイムサーバーアプリケーションで使用する必要があるため、ガベージの生成とパフォーマンスに厳密にする必要があります。
現在の解決策:
public interface Reloadable{
public void reload();
}
すべての構成ユーザーインスタンスを登録する構成マネージャーがあります。リロードを実行する場合、マネージャーは呼び出すだけでreload
、新しい構成を読み取り、すべての依存オブジェクトを再初期化します。
どんな助けでもいただければ幸いです。