example context beans applicationeventpublisher application and java spring dependency-injection event-handling

java - context - ¿Puedo asegurar que uno de mis Spring ApplicationListeners se ejecute al final?



spring events (1)

Todos sus beans que implementen ApplicationListener también deberían implementar Ordered y proporcionar un valor de orden razonable. Cuanto menor sea el valor, más pronto se invocará a tu oyente:

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; } //... }

Además, puede implementar PriorityOrdered para asegurarse de que uno de sus oyentes siempre se invoque primero.

Tengo varios servicios que están escuchando eventos Spring para realizar cambios en mi modelo de datos subyacente. Todo esto funciona al implementar ApplicationListener<Foo> . Una vez que todos los oyentes de Foo modifiquen el modelo de datos subyacente, mi interfaz de usuario debe actualizarse para reflejar los cambios (piense en fireTableDataChanged() ).

¿Hay alguna forma de garantizar que un oyente específico para Foo siempre sea el último? ¿O hay alguna forma de llamar a una función cuando todos los otros oyentes están listos? Estoy usando el cableado basado en anotaciones y la configuración de Java, si eso importa.