如果它包含美元符号 (${var}),则无法读取属性

Could not read properties if it contains dollar symbol (${var})

我有 属性 个包含以下内容的文件:

INVALID_ARGUMENT=Field ${fieldName} is invalid or missing.

我使用 spring 配置阅读这篇文章:

@PropertySource("error_messages_en.properties")
@Configuration
public static class ErrorMessagesEn {
     @Value("${INVALID_ARGUMENT}")
    private String invalidArgument;
}

但在应用程序启动后我看到:

Could not resolve placeholder 'fieldName' in value "Ïîëå ${fieldName} íåêîððåêòíî çàïîëíåíî èëè ïðîïóùåíî."

我需要 ${fieldName} 因为我想使用 repacer:

如何避免这个错误?

您应该转义 ${fieldName},因为它未定义为 Spring 属性。

你可以看看这个问题:Escape property reference in spring property file 和相关的答案。

你应该这样写:

INVALID_ARGUMENT=Field #{'$'}{fieldName} is invalid or missing.

如果您使用的是 yaml 文件,则需要用引号将值括起来

参数:"Field #{'$'}{fieldName} is invalid or missing."