SpringBoot配置
SpringBoot是基于约定的,所以很多配置都有默认值,但如果想使用自己的配置替换默认配置的话,就可以使用application.properties或者application.yml(application.yaml)进行配置。
-
默认配置文件名称:application
-
在同一级目录下优先级为:properties>yml > yaml
例如:配置内置Tomcat的端口
server.port=8080
yml:
server:
port: 8080
-
-
数据值前边必须有空格,作为分隔符
-
使用缩进表示层级关系
-
缩进时不允许使用Tab键,只允许使用空格(各个系统 Tab对应的 空格数目可能不同,导致层次混乱)。
-
缩进的空格数目不重要,只要相同层级的元素左侧对齐即可
-
server: port: 8080 address: 127.0.0.1 name: abc
person: name: zhangsan # 行内写法 person: {name: zhangsan}
address: - beijing - shanghai # 行内写法 address: [beijing,shanghai]
msg1: 'hello \n world' # 单引忽略转义字符 msg2: "hello \n world" # 双引识别转义字符
参数引用
name: lisi person: name: ${name} # 引用上边定义的name值
#获取普通配置 @Value("${name}") private String name; #获取对象属性 @Value("${person.name}") private String name2; #获取数组 @Value("${address[0]}") private String address1; #获取纯量 @Value("${msg1}") private String msg1;
Evironment
@Autowired private Environment env; System.out.println(env.getProperty("person.name")); System.out.println(env.getProperty("address[0]"));
@Component @ConfigurationProperties(prefix = "person") public class Person { private String name; private int age; private String[] address; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String[] getAddress() { return address; } public void setAddress(String[] address) { this.address = address; } @Override public String toString() { return "Person{" + "name='" + name + '\'' + ", age=" + age + '}'; } }
-
profile是用来完成不同环境下,配置动态切换功能的。
-
多profile文件方式:提供多个配置文件,每个代表一种环境。
application-dev.properties/yml 开发环境
application-test.properties/yml 测试环境
application-pro.properties/yml 生产环境
yml多文档方式:
在yml中使用 --- 分隔不同配置
-
profile激活方式
-
配置文件: 再配置文件中配置:spring.profiles.active=dev
-
虚拟机参数:在VM options 指定:-Dspring.profiles.active=dev
-
命令行参数:java –jar xxx.jar --spring.profiles.active=dev
-
file:./config/:当前项目下的/config目录下
-
file:./ :当前项目的根目录
-
classpath:/config/:classpath的/config目录
-
classpath:/ :classpath的根目录
1.命令行
java -jar app.jar --name="Spring“ --server.port=9000
2.指定配置文件位置
java -jar myproject.jar --spring.config.location=e://application.properties
3.外部不带profile的properties文件
classpath:/config/application.properties
classpath:/application.properties
官网配置文件的说明
https://docs.spring.io/spring-boot/docs/current/reference/html/spring-boot-features.html#boot-features-external-config