kho*_*g07 10 null yaml default-value spring-el spring-boot
我正在尝试使用SpringBoot版本1.3.0.RELEASE在application.yml中将默认值定义为null值.目标是能够使用带ConfigurationProperties注释的类来引用它
-- application.yml --
test.foo: ${test.bar:#{null}}
Run Code Online (Sandbox Code Playgroud)
但它不起作用.
如果test.bar未定义值,则设置test.foo为null(默认值)
我的依赖项中已经有了spring-el.我不想用PropertyPlaceholderConfigurer.setNullValue
它似乎工作@Value但不在application.yml(参见http://farenda.com/spring/spring-inject-null-value/)
这是一个错误,或者yaml不是为此而设计的?我在http://yaml.org/type/null.html中尝试了所有值,但它也没有用
谢谢
从文档中我们可以看到:
一个常见的用例是使用“#{systemProperties.myProp}”样式表达式分配默认字段值。
这里实际上分为三个阶段:
AutowiredAnnotationBeanPostProcessorEnvironmenExpressionParser如果我们像您所描述的test.foo那样定义a :application.yml
-- application.yml --
test.foo: ${test.bar:#{null}}
Run Code Online (Sandbox Code Playgroud)
然后,我们通过代码在代码中引用它@Value,它的工作原理就像你说的那样。
@Autowired
public A(@Value("test.foo") Object a) {}
Run Code Online (Sandbox Code Playgroud)
但如果我们直接从 获取它environment,它将是纯字符串:
env.getProperty("test.foo")
Run Code Online (Sandbox Code Playgroud)
所以,它是否有效取决于你如何使用它。在提供更多信息之前我无法提供更多帮助。希望以下相关帖子可以有所帮助。
| 归档时间: |
|
| 查看次数: |
6600 次 |
| 最近记录: |