@EventListener 中的 SPEL 表达式
SPEL expression in @EventListener
以下代码示例摘自 Spring 文档。我的问题是如何传递一个变量来代替 'qux-'。我尝试了#{}、${}。
@EventListener(condition = "event.listenerId.startsWith('qux-')")
public void eventHandler(ListenerContainerIdleEvent event) {
...
}
在 Spring Boot 中使用 EL 时,您需要用 #{} 包围整个表达式,并且在内部,您必须使用 ${} 以便您可以从应用程序上下文中检索变量。
所以在你的情况下,这应该有效:
@EventListener(condition = "#{'event.listenerId'.startsWith(${'myVariable'})}")
可以做到,但间接...
@Bean
String prefix(@Value("${foo:qux-}") String foo) {
return foo;
}
和
@EventListener(condition = "event.listenerId.startsWith(@prefix)")
如果没有属性foo
,则使用qux-
。
以下代码示例摘自 Spring 文档。我的问题是如何传递一个变量来代替 'qux-'。我尝试了#{}、${}。
@EventListener(condition = "event.listenerId.startsWith('qux-')")
public void eventHandler(ListenerContainerIdleEvent event) {
...
}
在 Spring Boot 中使用 EL 时,您需要用 #{} 包围整个表达式,并且在内部,您必须使用 ${} 以便您可以从应用程序上下文中检索变量。 所以在你的情况下,这应该有效:
@EventListener(condition = "#{'event.listenerId'.startsWith(${'myVariable'})}")
可以做到,但间接...
@Bean
String prefix(@Value("${foo:qux-}") String foo) {
return foo;
}
和
@EventListener(condition = "event.listenerId.startsWith(@prefix)")
如果没有属性foo
,则使用qux-
。