下面的代码示例取自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'})}")