常用配置
SpringBoot常用的配置如下
# 端口
server.port=8080
# 应用名称
spring.application.name=hello
# 请求上下文
server.servlet.context-path=/hello
更多属性查询Spring官网:https://docs.spring.io/spring-boot/docs/current/reference/html/application-properties.html#appendix.application-properties
Spring 提供三种类型配置文件
- application.properties(传统方式)
server.port=8080
- application.yml(主流方式)
server:
port: 8080
- application.yaml
server:
port: 8080
配置文件优先级:application.properties > application.yml > application.yaml
优先级高的会覆盖优先级低的配置。
yml语法
yml相比properties 更方便阅读,目前主流都是采用yml。
语法注意:属性名: 属性值
,大小写敏感、#
表示注释…
# 基本类型
bool: true
string: "str"
int: 0
# 对象
obj:
name: name1
age: 11
# 数组
array: 1,2,3
# 数组对象
arrayObj:
- name: terry
age: 11
- name: terry2
age: 12
# 数组对象 JSON格式
json: [{name: terry, age: 11}, {name: terry2, age: 12}]
# 变量引用
baseUrl: http://127.0.0.1
add: ${baseUrl}/add
update: ${baseUrl}/update
读取配置文件
使用@Value读取单个属性
yml示例
obj:
name: name1
# 数组
array: 1,2,3
# 数组对象
arrayObj:
- name: terry
age: 11
- name: terry2
age: 12
java 示例
@Value("${obj.name}")
private String name;
@Value("${array}")
private int[] array;
@Value("${arrayObj[0].name}")
private String array1;
使用Environment读取全部属性
@Autowired
private Environment environment;
@RequestMapping("/testEnv")
public void testEnv(){
String name = environment.getProperty("obj.name");
String add = environment.getProperty("add");
System.out.println(name);
System.out.println(add);
}
使用@ConfigurationProperties
使用@ConfigurationProperties 可以自动将配置装配到配置类中
datasource:
driver: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost:3306/test
username: root
password: 123456
@Configuration
// 指定前缀
@ConfigurationProperties(prefix = "datasource")
public class MyDataSource {
// 属性名和配置类一样
private String driver;
private String url;
private String username;
private String password;
}
多环境开发
企业级开发中,通常会定义如下配置文件。
application.yml
# 开发环境
application-dev.yml
# 生产环境
application-prod.yml
# 测试环境
application-test.yml
application.yml 指定开发环境
spring:
profiles:
active: dev
临时属性
临时属性指不写在配置文件,在外部启动项目添加参数。打jar包追加参数、idea启动追加参数,如下:
设置端口号
java -jar springboot.jar --server.port=8080
指定读取的配置文件:
java -jar springboot.jar --spring.config.location=classpath:/app.yml
配置位置优先级
- 打包后当前目录 config/application.yml
- 打包后当前目录 application.yml
- classpath: config/application.yml
- classpath: application.yml