02Spring Boot配置文件詳解
自定義屬性
- 在src/main/java/resources目錄下建立一個application.properties或application.yml
- 在application.yml自定義一組屬性
my:
name: boot
age: 12
- 讀取配置文件的值只須要加@Value("${屬性名}")
@RestController
public class ConfigController {
@Value("${my.name}")
private String name;
@Value("${my.age}")
private int age;
@RequestMapping(value = "/config")
public String config(){
return name+":"+age;
}
}
- 啓動項目,訪問:localhost:8080/config
將配置文件的屬性賦給實體類
- 當配置中有不少屬性時,能夠把這些屬性做爲字段建立javabean,並將屬性值賦予給他們
my:
name: boot
age: 20
# ${random} ,用來生成各類不一樣類型的隨機值。
number: ${random.int}
uuid: ${random.uuid}
max: ${random.int(10)}
value: ${random.value}
greeting: hi,i'm ${my.name}
- 建立一個javabean,並添加註解@ConfigurationProperties(prefix = "my")
@ConfigurationProperties(prefix = "my")
public class ConfigBean {
private String name;
private int age;
private int number;
private String uuid;
private int max;
private String value;
private String greeting;
get...set...省略
使用idea自動生成get,set和toString
}
- 在應用類或啓動類上增長註解
@EnableConfigurationProperties({ ConfigBean.class })
- 添加ConfigBeanController類
@RestController
public class ConfigBeanController {
@Autowired
private ConfigBean configBean;
@RequestMapping("/configbean")
public String config(){
// 輸出全部字段的值
return configBean.toString();
}
}
- 啓動項目,訪問http://localhost:8080/configbean
自定義配置文件
- application配置文件是系統默認的,咱們能夠添加其餘名稱的配置文件,如test.properties(不能是test.yml,測試讀不到數據)
com.boot.name=boot
com.boot.age=20
- 添加TestBean,須要指定文件名和前綴
@Configuration
@PropertySource(value = "classpath:test.properties")
@ConfigurationProperties(prefix = "com.boot")
public class TestBean {
private String name;
private int age;
省略get,set,tostring
}
- 添加TestBeanController
@EnableConfigurationProperties({TestBean.class})
@RestController
public class TestBeanController {
@Autowired
private TestBean testBean;
@RequestMapping("/testconfig")
public String testConfig() {
return testBean.toString();
}
}
- 啓動項目,返回http://localhost:8080/testconfig
多個環境配置文件
- 在現實的開發環境中,咱們須要不一樣的配置環境;格式爲application-{profile}.properties,其中{profile}對應你的環境標識,好比
- application-test.properties:測試環境
- application-dev.properties:開發環境
- application-prod.properties:生產環境
- 實際使用的配置文件,經過在application.yml中增長:
spring:
profiles:
active: dev
- 添加application-dev.yml
my:
name: dev
age: 11
#server:
# port: 8082
- 啓動程序,訪問http://localhost:8080/config,發現讀取的是application-dev.yml中的配置
- 訪問http://localhost:8080/configbean,會發現,當application-dev.yml和application.yml中有重名的字段時,前者會覆蓋後者的值。
ConfigBean{name='dev', age=11, number=-1422131996, uuid='5bebc511-f1a4-4f2b-95ed-540e4b48e8bd', max=0, value='8b96a5bbde492fb189e4fa52573c9caf', greeting='hi,i'm dev'}