SpringBoot(三) Core Features: External Configuration(配置文件)
可以使用屬性文件,YAML文件,環境變量和命令行參數來外部化配置
一、屬性值可以直接注入到bean
系統屬性值不可以
// application.properties
name=xiaoming
server.port=80
import org.springframework.stereotype.*;
import org.springframework.beans.factory.annotation.*;
@Component
public class MyBean {
@Value("${name}")
private String name;
@Value("${server.port}") // 不可以
private String name;
// ...
}
二、屬性作為參數應用
文檔: 24.5 Placeholders in Properties
server.port=80
# 自定義屬性
xm.name=xiaoming
xm.gener=man
xm.reference=Name:${xm.name},Gener:${xm.gener},${server.port} // 系統屬性貌似不可以
三、配置隨機數(Configuring Random Values)
四、通過命令行設置屬性值(Accessing Command Line Properties)
可以禁用
SpringApplication.setAddCommandLineProperties(false)
五、多環境配置
通過配置多份不同環境的配置文件,再通過打包命令指定需要打包的內容之后進行區分打包
六、關于自定義配置文件
- 自定義配置
peron:
lastName: xiaoming
last: 18
boss: false
birth: 2017/12/12
maps: {k1: v1,k2: v2}
lists:
- lisi
- zhaoliu
dog:
name: 小狗
age: 2
- 使用注解映射屬性的值
@Component
@ConfigurationProperties("person")
public class Person {
private String lastName;
private Integer age;
...
}
- 聲明依賴 (見附錄B)
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
- 主程序類啟用
@EnableConfigurationProperties注解
@SpringBootApplication
@EnableConfigurationProperties
public class HelloWorldMainApplication {
...
}
參考
- 文檔: 24.3 Application Property Files
- 附錄B.配置元數據: B.3 Generating Your Own Metadata by Using the Annotation Processor
七、YAML
不可以使用 @PropertySource注解來加載, 只能加載properties文件

浙公網安備 33010602011771號