22

基盤となるデータモデルに変更を加えるためにSpringイベントをリッスンするサービスがいくつかあります。これらはすべて、を実装することで機能しますApplicationListener<Foo>。すべてのFooリスナーが基になるデータモデルを変更したら、変更を反映するためにユーザーインターフェイスを更新する必要があります(think fireTableDataChanged())。

の特定のリスナーFooが常に最後になるようにする方法はありますか?または、他のすべてのリスナーが完了したときに関数を呼び出す方法はありますか?必要に応じて、アノテーションベースの配線とJava構成を使用しています。

4

1 に答える 1

39

実装するすべてのBeanは、妥当な注文値ApplicationListenerも実装して提供する必要があります。Ordered値が小さいほど、リスナーがより早く呼び出されます。

class FirstListener implements ApplicationListener<Foo>, Ordered {
    public int getOrder() {
        return 10;
    }
    //...
}

class SecondListener implements ApplicationListener<Foo>, Ordered {
    public int getOrder() {
        return 20;
    }
    //...
}

class LastListener implements ApplicationListener<Foo>, Ordered {
    public int getOrder() {
        return LOWEST_PRECEDENCE;
    }
    //...
}

PriorityOrderedさらに、リスナーの1つが常に最初に呼び出されるように実装できます。

于 2012-06-05T18:59:12.857 に答える