@EventListener中的SPEL表达式



下面的代码示例取自Spring文档。我的问题是如何传递一个变量来代替"qux-"。我试过#{},${}。

@EventListener(condition = "event.listenerId.startsWith('qux-')")
public void eventHandler(ListenerContainerIdleEvent event) {
...
}

这是可以做到的,但间接地。。。

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

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

如果没有属性foo,它将使用qux-

在Spring Boot中使用EL时,需要用#{}包围整个表达式,并且在表达式内部,必须使用${},这样才能从应用程序上下文中检索变量。因此,在您的情况下,这应该有效:

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

最新更新