1

エンティティの一意のインクリメント ID を生成しようとしています。その目的のために、すべてのエンティティ タイプに対して複数の ApplicationListeners を次のように登録しました。

public class Neo4JCustomerSaveListener implements ApplicationListener<BeforeSaveEvent<Customer>> {
    public void onApplicationEvent(BeforeSaveEvent<Customer> event) {
        ...
    }
}

定義は次のようなものです:

<!-- Listeners -->
<bean id="customerSaveListener" class="c.b.listener.Neo4JCustomerSaveListener" />
<bean id="employeeSaveListener" class="c.b.listener.Neo4JEmployeeSaveListener" />
<bean id="messageSaveListener" class="c.b.listener.Neo4JMessageSaveListener" />

ご覧のとおり、型BeforeSaveEventでパラメータ化されていCustomerます。ただし、保存イベントが顧客に対して発生しようとすると、他のリスナーもトリガーされますが、これらのリスナーはorBeforeSaveEventなどのさまざまなタイプでパラメーター化されています(同じ親クラスから継承している間)EmployeeMessageEntity

これは予想されることですか?そして、この問題に対する私のアプローチはどうあるべきですか? 最初に頭に浮かぶのは、リスナーを 1 つだけ使用して内部をinstanceOf ifs で区別することですが、これは非常に見苦しく思えます。

私はneo4j 1.9.M03、spring-data-neo4j 2.1.0.RC4、およびspring 3.1.3を使用しています

4

0 に答える 0