Приведенный ниже пример кода взят из документации Spring. Мой вопрос заключается в том, как передать переменную вместо 'qux-'. Я пытался # {}, $ {}.

@EventListener(condition = "event.listenerId.startsWith('qux-')")
    public void eventHandler(ListenerContainerIdleEvent event) {
        ...
    }
0
iluvgarden 17 Апр 2020 в 00:54

2 ответа

Лучший ответ

Это можно сделать, но косвенно ...

@Bean
String prefix(@Value("${foo:qux-}") String foo) {
    return foo;
}

И

@EventListener(condition = "event.listenerId.startsWith(@prefix)")

Он будет использовать qux-, если нет свойства foo.

0
Gary Russell 17 Апр 2020 в 13:33

При использовании EL с Spring Boot вам необходимо окружить все выражение # {} и внутри, вы должны использовать $ {}, чтобы вы могли извлечь переменную из контекста вашего приложения. Так что в вашем случае это должно работать:

@EventListener(condition = "#{'event.listenerId'.startsWith(${'myVariable'})}")

0
leozin 17 Апр 2020 в 10:25