Spring中@Value读取properties作为map或list的操作Spring读取properties作为map:
properties⽂件中:
blog-top-links={home:"/home"}
blog-list=1,2,3
map的写法和json差不多,但是应该不⽀持嵌套,没有尝试。
key加不加引号都可以,value加双引号单引号都可以,但是当key中有”-“时就必须加引号,例如key为:about-me时,就必须加引号否则解析失败
list的写法和数组差不多,可以⾃定义分隔符,在java中分割即可
配置类中:
@Component
@ConfigurationProperties
@PropertySource("properties⽂件路径")
public class BlogConfig {
@Value("#{${blog-top-links}}")
private Map<String, String> topLinks;
@Value("#{'${blog-list}'.split(',')}")
private List<Integer> list;
...
省略get/set
实际不能省略,否则虽然能启动不报错,但是⽆法获取到值
}
spring怎么读取properties获取map的⽅法:
@Value("#{${blog-top-links}}")
使⽤#{${key}}的⽅式
获取list的⽅法:
@Value("#{'${blog-list}'.split(',')}")
使⽤@Value(“#{‘${key}'.split(‘,')}”)的⽅式
split(‘,')只以','为分隔符,也可以换成别的
当配置⽂件中没有key时,也可以使⽤key:default_value的⽅法设置默认值
@Value注⼊map、List
yaml格式
@Value("#{'${list}'.split(',')}")
private List<String> list;
@Value("#{${maps}}")
private Map<String,String> maps;
@Value("#{${redirectUrl}}")
private Map<String,String> redirectUrl;
配置⽂件
list: topic1,topic2,topic3
maps: "{key1: 'value1', key2: 'value2'}"
redirectUrl: "{sso_client_id: '${id}',sso_client_secret: '${secret}',redirect_url: '${client.main.url.default}'}"
注意上⾯的map解析中,⼀定要⽤"“把map所对应的value包起来,要不然解析会失败,导致不能转成 Map<String,String>
因为yaml语法中如果⼀个值以 “{” 开头, YAML 将认为它是⼀个字典, 所以我们必须引⽤它必须⽤”" yaml写法注意:
字符串默认不⽤加上单引号或者双引号
“”:双引号;不会转义字符串⾥⾯的特殊字符;特殊字符会作为本⾝想表⽰的意思
name: “zhangsan \n lisi”:输出;zhangsan 换⾏ lisi
‘':单引号;会转义特殊字符,特殊字符最终只是⼀个普通的字符串数据
name: ‘zhangsan \n lisi':输出;zhangsan \n lisi
properties格式
以上为个⼈经验,希望能给⼤家⼀个参考,也希望⼤家多多⽀持。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。