@ConditionalOnProperty 可以使用嵌套的 属性 值吗?

Can @ConditionalOnProperty use a nested property value?

我想做类似的事情:

@ConditionalOnProperty("${${appname}.someVal}")
@Controller
public class MyController {...}

我的 yaml 的位置:

appname: myapp
myapp:
  someVal: true

我该怎么做?

编辑:这不起作用:

@Value("#{'${appname}.someVal'}")

要评估 SpEL,请使用 @ConditionalOnExpression 而不是 @ConditionalOnProperty

看起来不是很优雅,但在这里:

@ConditionalOnExpression("#{environment.getProperty('${appname}.someVal') == 'true'}")

environment 引用一个实现 org.springframework.core.env.Environment 的 bean,它在每个 Spring 开箱即用的启动应用程序中可用。