Spring Boot 当默认值设置为空字符串时,Sping Boot @Value无法工作[已关闭]

sd2nnvve  于 2022-11-05  发布在  Spring
关注(0)|答案(1)|浏览(162)

**已关闭。**此问题需要debugging details。当前不接受答案。

编辑问题以包含desired behavior, a specific problem or error, and the shortest code necessary to reproduce the problem。这将有助于其他人回答问题。
14小时前就关门了。
Improve this question
我使用@Value并将空字符串设置为默认值。

@Value("${rootPath:}")
private String rootPath;

它在很长一段时间内都工作正常(Sping Boot 2. 1. x和2. 2. x)。
这次我特灵将我的Sping Boot 版本升级到2.5.x。结果我无法正确获得属性值。

我已经在application.yml中定义了我的属性,但是当设置了默认值时,我无法获得它。
我已经检查了Sping Boot 发行说明,没有用@Value进行任何更改。
我在另一个项目代码上尝试了这段代码(使用相同的Sping Boot 版本),它运行得很好。但是我几乎找不到这两个项目有什么不同。我没有改变任何关于这个特性的东西。

xj3cbfub

xj3cbfub1#

结果发现,这是一个关于URulePropertyPlaceholder的配置,定义在我导入的一个jar中(这是我的同事创建的一个插件)。

@Component
public class URulePropertyPlaceholderConfigurer extends PropertyPlaceholderConfigurer {
    public URulePropertyPlaceholderConfigurer() {
        setIgnoreUnresolvablePlaceholders(true);
        setOrder(100);
    }
}

它会导致所有的占位符读取错误。我改变了它,一切都很好。

@Component
public class URulePropertyPlaceholderConfigurer extends PropertySourcesPlaceholderConfigurer {
    public URulePropertyPlaceholderConfigurer() {
        setIgnoreUnresolvablePlaceholders(true);
        setOrder(100);
    }
}

相关问题