次の Java コードがあるとします。
public class Maintainer {
private Map<Enum, List<Listener>> map;
public Maintainer() {
this.map = new java.util.ConcurrentHashMap<Enum, List<Listener>>();
}
public void addListener( Listener listener, Enum eventType ) {
List<Listener> listeners;
if( ( listeners = map.get( eventType ) ) == null ) {
listeners = new java.util.concurrent.CopyOnWriteArrayList<Listener>();
map.put( eventType, listeners );
}
listeners.add( listener );
}
}
このコード スニペットは、各リスナーが関心のあるイベントの種類を伝え、提供されたメソッドがこれらの関係の同時マップを維持する、少し改善されたリスナー パターンに他なりません。
当初、私はこのメソッドを独自の注釈フレームワーク経由で呼び出すことを望んでいましたが、さまざまな注釈制限のレンガの壁にぶつかりました (たとえば、java.lang.Enumを注釈パラメーターとして使用することはできません。さまざまなクラスローダーの問題もあります)。したがって、Spring を使用することにしました。
これを Spring_ify_ する方法を誰か教えてもらえますか? 私が達成したいことは次のとおりです。 1. Maintainerクラスを Spring Bean として
定義します。2. addListenerメソッドを使用
して、あらゆる種類のリスナーがXML 経由で自身をMaintainerに登録できるようにします。Spring docもGoogleも例に非常に寛大です。
これを簡単に達成する方法はありますか?