我尝试在SpringBoot版本为1.3.0.RELEASE的application.yml中将缺省值定义为null值。
-- application.yml --
test.foo: ${test.bar:#{null}}但它不起作用。
如果未定义test.bar的值,则将test.foo设置为null (默认值)
我的依赖中已经有了spring-el。我不想使用PropertyPlaceholderConfigurer.setNullValue
它似乎可以在@Value中工作,但不能在application.yml中工作(参见http://farenda.com/spring/spring-inject-null-value/)
这是一个bug,还是yaml不是为此而设计的?我尝试了http://yaml.org/type/null.html中的所有值,但也不起作用
谢谢
发布于 2017-10-05 22:09:47
@Value
从文档中我们可以看到:
一个常见的用例是使用"#{systemProperties.myProp}“样式表达式分配默认字段值。
这里实际上是三个阶段:
通过注释元数据获取属性值-- AutowiredAnnotationBeanPostProcessor
ExpressionParser
-- Environmen
用例
如果我们像您所描述的那样在application.yml中定义一个test.foo:
-- application.yml --
test.foo: ${test.bar:#{null}}然后,我们通过@Value在代码中引用它,它按照您所说的那样工作。
@Autowired
public A(@Value("test.foo") Object a) {}但是如果我们直接从environment获取,它将是纯字符串:
env.getProperty("test.foo")更多
所以,它是不是工作取决于你是如何使用它的。在获得更多信息之前,我无法提供更多帮助。希望下面的相关帖子能有所帮助。
发布于 2020-04-08 17:45:51
尝试使用:
-- application.yml --
test.foo: ${test.bar:}发布于 2020-05-14 20:17:27
你需要这样设置它:
test:
foo: ${test.bar:'#{null}'}https://stackoverflow.com/questions/34041197
复制相似问题