FIPS:
それは、実行時に春の豆を再初期化することは可能ですか?
私の豆は、いくつかのケースで変わる静的な設定を使用していますし、私は、Beanを再初期化する必要があります。
Amithクマール:
あなたは、あなたのユースケースに適したものを選ぶことができ、春のコンテキストでシングルトンBeanを更新するための3つのオプションがあります。
豆でreloadメソッドは
/そのプロパティをリロード更新しますあなたのBean内のメソッドを作成します。あなたのトリガ、アクセス春の文脈から豆に基づいて、そしてそれはまた、それがautowiredさ至る所&/注入された春のコンテキストで更新されます(シングルトン以降)更新Beanプロパティへのリロードメソッドを呼び出します。
レジストリ内のビーン削除&登録
あなたは使用することができますDefaultSingletonBeanRegistry
削除&あなたのBeanを再登録します。これに対する唯一の欠点は、それがリフレッシュ/消費者のクラスですでにautowired /注入された豆の古いインスタンスをリロードしません。
DefaultSingletonBeanRegistry registry = (DefaultSingletonBeanRegistry) context.getBeanFactory();
registry.destroySingleton({yourbean}) //destroys the bean object
registry.registerSingleton({yourbeanname}, {newbeanobject}) //add to singleton beans cache
@RefreshScope
設定変更からビーン値のプロパティを更新するための有用な。しかし、それは非常に限ら&特定の目的ました。リソースそれについてもっと読むために。