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

时间:2017-10-31 22:53:05

标签: java spring spring-boot yaml spring-config

我想做类似的事情:

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

我的yaml会有:

appname: myapp
myapp:
  someVal: true

我该怎么做?

编辑:这不起作用:

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

1 个答案:

答案 0 :(得分:2)

要评估SpEL,请使用@ConditionalOnExpression代替@ConditionalOnProperty

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

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

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