# application.properties
系统默认的配置文件名称是`application.properties`,内容样式如下:
~~~
server.port=8080
spring.profiles=dev
spring.thymeleaf.cache=false
~~~
也可以使用` application.yml`
## 使用多环境配置
在Spring Boot中多环境配置文件名需要满足application-{profile}.properties的格式,其中{profile}对应你的环境标识,如:
~~~
application-dev.properties:开发环境
application-pro.properties:生产环境
~~~
这样就可以使用多状态配置。在使用时,需要在配置文件application.properties中标记激活配置`spring.profiles.active=dec`
命令行 执行java -jar xxx.jar --spring.profiles.active=dev,就可以使用application-dev.properties中的配置。
比如在Test中,加入:@ActiveProfiles("dev")即可使用dev的配置。加入:@ActiveProfiles("home")即可使用home的配置。
# 使用yml多环境配置
配置文件也可以写成application.yml,格式更简洁。
如开发环境和生产环境分开配置,可以使用符号`---`,如:
~~~
spring:
profiles:
#激活开发环境
active: dev
---
#开发环境配置
spring:
profiles: dev
server:
port: 8080
---
#生产环境配置
spring:
profiles: pro
server:
port: 8082
~~~
注意,参数值和:之间要有空格
## 调用属性值:@Value 注解注入属性
在类中使用配置里的值,可以使用@Value注解:
```
@value("${age}")
private Integer age;
```
## @ConfigurationProperties
在类前注释 @ConfigurationProperties 可以直接为类的属性赋值为配置参数,
‘prefix’是配置前缀
首先增加配置参数文件user.yml:
```
profile:
age: 20
sex: 1
nickname: jack
```
使用配置属性:
```
@Component
@ConfigurationProperties(prefix = "user")
@PropertySource("classpath:profile.yml")
public class UserConfiguration {
private String sex;
private String nickname;
...
}
```
@PropertySource 指定配置文件路径
## 通过命令行设置属性值
命令:java -jar xxx.jar --server.port=8888,通过使用--server.port属性来设置xxx.jar应用的端口为8888。
在命令行运行时,连续的两个减号--就是对application.properties中的属性值进行赋值的标识。所以,java -jar xxx.jar --server.port=8888命令,等价于我们在application.properties中添加属性server.port=8888,该设置在样例工程中可见,读者可通过删除该值或使用命令行来设置该值来验证。
安全起见,Spring Boot提供了屏蔽命令行访问属性的设置,只需要这句设置就能屏蔽:SpringApplication.setAddCommandLineProperties(false)。
## 配置优先级
优先级如下:
1. 命令行参数
2. 来自java:comp/env的JNDI属性
3. Java系统属性(System.getProperties())
4. 操作系统环境变量
5. RandomValuePropertySource配置的random.*属性值
6. jar包外部的application-{profile}.properties或application.yml(带spring.profile)配置文件
7. jar包内部的application-{profile}.properties或application.yml(带spring.profile)配置文件
8. jar包外部的application.properties或application.yml(不带spring.profile)配置文件
9. jar包内部的application.properties或application.yml(不带spring.profile)配置文件
10. @Configuration注解类上的@PropertySource
11. 通过SpringApplication.setDefaultProperties指定的默认属性