# 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指定的默认属性