Spring EventListener con condición externa
Necesito filtros flexibles paraFooEvents
para múltiples EventListeners en todo mi código. Puedo usar @EventListener (condition = "event.enabled"), pero mis filtros requieren muchos atributos de fooEvent para ser analizados.
Esperaba poder usar un Predicate-Bean de mi contexto de aplicación:
@Component
public class FooPredicate implements Predicate<FooEvent> {
public boolean test(FooEvent event) {...}
}
...
@EventListener(condition="${fooPredicate.test(event)}")
public void handle(FooEvent event) { ... }
Pero me sale:
org.springframework.expression.spel.SpelEvaluationException: EL1011E:
Method call: Attempted to call method
test(org.springframework.context.PayloadApplicationEvent) on null
context object
¿Es posible usar condiciones externas complejas para EventListerns? ¿O al menos definir oyentes globales con condiciones complejas y heredar su comportamiento sin repetir las condiciones completas?