springboot yml里面配置list 日期日期格式的postMen 发送json
?
?
ipWhiteList:ips: 10.0.0.2,127.0.0.1?
?
?
日期個(gè)是的postMen ?發(fā)送json
{
? ? "multiple": 39,
? ? "tenantNo": 39,
? ? "endCheckNum": 39,
? ? "meterNo": 39,
? ? "checkUser": 39,
? ? "checkTime": "2020-01-01T01:01:09+08:00"
}
?
?
?
https://blog.csdn.net/ZYC88888/article/details/88748516
spring @Value注入map、List、Bean、static變量方式及詳細(xì)使用
ZhaoYingChao88 2019-03-22 19:12:05 ?7594 ?收藏 9
展開(kāi)
使用@Value注入map、List
實(shí)體類
List:
? ? @Value("${test.list.ids:1,2,3}")
? ? private List<String> testList;
或者
? ? @Value("${test.list.ids:1,2,3}")
? ? private String[] testList;
?
List 指定分隔符
@Value("#{'${test.list}'.split(',')}")
private List<String> list;
配置文件
test.list: topic1,topic2,topic3
split(‘,’)只以’,’為分隔符,也可以換成別的
當(dāng)配置文件中沒(méi)有key時(shí),也可以使用key:default_value的方法設(shè)置默認(rèn)值?
?map:
@Value("#{${test.maps}}") ?
private Map<String,String> maps;
配置文件
?
test.maps: "{key1: 'value1', key2: 'value2'}"
ps: 注意上面的map解析中,一定要用""把map所對(duì)應(yīng)的value包起來(lái),要不然解析會(huì)失敗,導(dǎo)致不能轉(zhuǎn)成?Map<String,String>。
?
通過(guò)@Value( ) 給靜態(tài)變量注入值?
spring 不允許/不支持把值注入到靜態(tài)變量中,如:
@Value("${ES.CLUSTER_NAME}")
private static String CLUSTER_NAME;
在方法中獲得的CLUSTER_NAME,會(huì)得到null
解決
好在spring支持set方法注入,我們可以利用非靜態(tài)setter 方法注入靜態(tài)變量。如:
private static String CLUSTER_NAME;
?
@Value("${ES.CLUSTER_NAME}")
public void setClusterName(String clusterName) {
CLUSTER_NAME = clusterName;
}
@Value必須修飾在方法上,且set方法不能有static??這樣就能獲得值了
?Spring中使用@Value如何按類型注入值
示例:
容器中,有一個(gè)Runnable的bean
@Configuration
public class Config {
?
?? ?@Bean("myrun")
?? ?public Runnable run() {
?? ??? ?return () -> System.out.println("this is spring run");
?? ?}
}
想使用@Value的方式,把這個(gè)bean注入進(jìn)來(lái),這種是按bean的名字注入。
?
@Service
public class Runner {
?
?? ?@Value("#{myrun}")
?? ?private Runnable run;
?? ?
?? ?public void run() {
?? ??? ?run.run();
?? ?}
}
#{…}和${…}?
${…}用法
通過(guò)@Value(“${spelDefault.value}”)可以獲取屬性文件中對(duì)應(yīng)的值,但是如果屬性文件中沒(méi)有這個(gè)屬性,則會(huì)報(bào)錯(cuò)。可以通過(guò)賦予默認(rèn)值解決這個(gè)問(wèn)題,如
@Value("${test.value:127.0.0.1}")
#{…}用法
#{…}的{}里面的內(nèi)容必須符合SpEL表達(dá)式,詳細(xì)的語(yǔ)法,以后可以專門開(kāi)新的文章介紹,這里只演示簡(jiǎn)單用法:
?
${…}和#{…}混合使用
${...}和#{...}可以混合使用,如下文代碼執(zhí)行順序:通過(guò)
${server.name}
從屬性文件中獲取值并進(jìn)行替換,然后就變成了 執(zhí)行SpEL表達(dá)式
#{'server1,server2,server3'.split(',')}
// SpEL: 傳入一個(gè)字符串,根據(jù)","切分后插入列表中, #{}和${}配置使用(注意單引號(hào),注意不能反過(guò)來(lái)${}在外面,#{}在里面)
@Value("#{'${server.name}'.split(',')}") private List<String> servers;
在上文中在#{}外面,${}在里面可以執(zhí)行成功,那么反過(guò)來(lái)是否可以呢${}在外面,#{}在里面,是不能。
因?yàn)閟pring執(zhí)行${}是時(shí)機(jī)要早于#{}。${}在外面,#{}在里面是非法操作。
小結(jié)
#{…} 主要用于加載外部屬性文件中的值
${…} 用于執(zhí)行SpEl表達(dá)式,并將內(nèi)容賦值給屬性
#{…} 和${…} 可以混合使用,但是必須#{}外面,${}在里面
?ConfigurationProperties注入
@Data
@ConfigurationProperties(prefix = "jdbc")
public class SpringBootProperty {
? ? private String url;
? ? private String driverClassName;
? ? private String username;
? ? private String password;
?
}
注解解析:
@ConfigurationProperties注解聲明當(dāng)前類為屬性讀取類
prefix:讀取數(shù)據(jù)文件中,前綴為jdbc的值
在類上定義各個(gè)屬性,名稱必須與屬性文件中jdbc.后面部分一致
屬性文件是定義在application.yml文件中的
spring:
? application:
? ? name: property
server:
? port: 8083
jdbc:
? driverClassName: com.mysql.jdbc.Driver
? url: jdbc:mysql://127.0.0.1:3306/test
? username: root
? password: 123
二者區(qū)別?? ?@ConfigurationProperties?? ?@Value
功能?? ?批量注入配置文件中的屬性?? ?一個(gè)個(gè)指定
松散綁定(松散語(yǔ)法)?? ?支持?? ?不支持
SpEL?? ?不支持?? ?支持
JSR303數(shù)據(jù)校驗(yàn)?? ?支持?? ?不支持
復(fù)雜類型封裝?? ?支持?? ?不支持
?參照:https://segmentfault.com/a/1190000018536906
————————————————
版權(quán)聲明:本文為CSDN博主「ZhaoYingChao88」的原創(chuàng)文章,遵循CC 4.0 BY-SA版權(quán)協(xié)議,轉(zhuǎn)載請(qǐng)附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/ZYC88888/article/details/88748516
總結(jié)
以上是生活随笔為你收集整理的springboot yml里面配置list 日期日期格式的postMen 发送json的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 头条号的注册教程说明头条号 如何注册
- 下一篇: git删除本地分支、删除远程分支 复