LegacyなSingletonの取り込み
既存のコードで getInstance などのメソッドを呼んでSingleton を取得するタイプのクラスで、それをSpringのBeanとして管理下に置きたい場合は次のようにすることで実現できた。
これでLegacyなSingletonも他のBeanにDIすることが出来るようになる。
package tutorial; public class LegacySingleton { static private LegacySingleton instance = new LegacySingleton(); private LegacySingleton() { } static public LegacySingleton getInstance() { return instance; } : 何か有益なコード }
こんな Singleton な既存のクラスが有った場合
<bean name="legacy" class="tutorial.LegacySingleton" factory-method="getInstance" scope="singleton" />
とすると、
public class Foo { @Resource LegacySingleton legacy; : }
こんな風にDIしてもらえる。