springboot中使用@Value讀取配置檔案
一、配置檔案配置
直接配置
在src/main/resources下新增配置檔案application.properties
例如修改埠號
#埠號
server.port=8089
分環境配置
在src/main/resources下新增,application-pro.properties,application-dev.properties和application.properties三個檔案
application.properties
配置屬性啟用的檔案
spring.profiles.active=dev
application-pro.properties
#埠號 server.port=80 #自定義埠號讀取 my.name=pzr.dev
application-dev.properties
#埠號
server.port=8089
#自定義埠號讀取
my.name=pzr.pro
當application.propertie設定spring.profiles.active=dev時,則說明是指定使用application-dev.properties檔案進行配置
二、配置檔案引數讀取
2.1、註解方式讀取
1、@PropertySource配置檔案路徑設定,在類上添加註解,如果在預設路徑下可以不新增該註解。
需要用@PropertySource的有:
-
例如非application.properties,classpath:config/my.properties指的是src/main/resources目錄下config目錄下的my.properties檔案,
-
例如有多配置檔案引用,若取兩個配置檔案中有相同屬性名的值,則取值為最後一個配置檔案中的值
-
在application.properties中的檔案,直接使用@Value讀取即可,applicarion的讀取優先順序最高
@PropertySource({"classpath:config/my.properties","classpath:config/config.properties"})
public class TestController
2、@Value屬性名,在屬性名上新增該註解
@Value("${my.name}") private String myName;
三、配置檔案中配置集合類(Map、list)@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}'}"
注意:
上面的list配置中,一定不要用“”把list所有的成員value包起來,要不然解析報錯。
上面的map配置中,一定要用“”把map所對應的value包起來,要不然解析會失敗,導致不能轉成 Map<String,String>。