从yaml文件(不是application.yaml
)阅读其他属性时遇到问题。我试图解析字符串/字符串值的Map,但我得到NumberFormatException
。Spring似乎试图将其读取为整数。下面是一个map的例子:
id:
id1: -1001978483459
id2: -1001978483457
和属性类:
@Data
@Configuration
@PropertySource("classpath:/id.yml")
public class ChatIdProperties {
@Value("#{${id}}")
Map<String, String> id;
}
我认为应该可以强制Spring将其解析为string或long,因为yaml中使用的数字很大,但我不知道如何做到这一点。我尝试使用!!str
标记,结果为零
2条答案
按热度按时间8dtrkrch1#
正在读取的yaml文件具有格式的值,默认情况下,这些值将被读取为数值。要强制将值读取为String,可以将值括在引号中(即:e.如果你是yaml文件的所有者,并且可以修改它)这应该可以做到。
gojuced72#
application.yml:
MyAppProperties.java:
Application.java:
输出:
或者,如果你真的需要在属性中没有“myapp”前缀的情况下这样做:
application.yml:
IdProperties.java:
Application.java:
输出:
如果您需要在中存储ID。yml,而不是在应用中。yml,那么一个简单的方法就是导入id。yml:
application.yml:
(从Sping Boot 2开始。4 afaik)
id.yml:
我的答案的其余部分将叉罚款。
在你最初的帖子中,问题是@PropertySource不读取yml文件,只读取属性文件。因此,另一种方法是通过创建自定义PropertySourceFactory来使@PropertySource能够读取yml文件。此方法如下所述: www.example.com