properties
信息从哪里取在不一样的环境,咱们须要使用不一样的配置,Spring boot 已经提供了相关功能,能够是 properties
文件, yaml
文件 或是命令行参数。优先级以下java
Devtools global settings properties
on your home directory (~/.spring-boot-devtools.properties
when devtools is active).@TestPropertySource
annotations on your tests.@SpringBootTest#properties
annotation attribute on your tests.Command line arguments.spring
java -jar app.jar --name="Spring"
Properties from SPRING_APPLICATION_JSON
(inline JSON embedded in an environment variable or system property).json
SPRING_APPLICATION_JSON='{"acme":{"name":"test"}}' java -jar myapp.jar
command line:app
java -Dspring.application.json='{"name":"test"}' -jar myapp.jar
java -jar myapp.jar --spring.application.json='{"name":"test"}'
ServletConfig
init parameters.ServletContext
init parameters.java:comp/env
.System.getProperties()
).A RandomValuePropertySource that has properties only in random.*.less
my.secret=${random.value} my.number=${random.int} my.bignumber=${random.long} my.uuid=${random.uuid} my.number.less.than.ten=${random.int(10)} my.number.in.range=${random.int[1024,65536]}
application.properties
文件使用 properties
文件,spring boot 会根据如下目录去寻找,添加到 Spring Environment
中,优先级依次递增。dom
classpath:/
: resources
目录classpath:/config/
: resources
下 config
目录file:./
:工程根目录file:./config/
: 工程跟目录下的 config
目录从优先级高的先加载。ide
2019-03-27 22:38:24.848 DEBUG 39802 --- [ main] o.s.boot.SpringApplication : Loading source class com.example.exitcode.DemoApplication 2019-03-27 22:38:24.915 DEBUG 39802 --- [ main] o.s.b.c.c.ConfigFileApplicationListener : Loaded config file 'file:./config/application.properties' (file:./config/application.properties) 2019-03-27 22:38:24.915 DEBUG 39802 --- [ main] o.s.b.c.c.ConfigFileApplicationListener : Loaded config file 'file:./application.properties' (file:./application.properties) 2019-03-27 22:38:24.915 DEBUG 39802 --- [ main] o.s.b.c.c.ConfigFileApplicationListener : Loaded config file 'jar:file:xxxxx-0.0.1-SNAPSHOT.jar!/BOOT-INF/classes!/config/application.properties' (classpath:/config/application.properties) 2019-03-27 22:38:24.915 DEBUG 39802 --- [ main] o.s.b.c.c.ConfigFileApplicationListener : Loaded config file 'jar:file:xxxxx-0.0.1-SNAPSHOT.jar!/BOOT-INF/classes!/application.properties' (classpath:/application.properties)
优先级高的会覆盖优先级低的。spring-boot
./config/application.properties
ui
testconfig.first=./config/ #testconfig.second=./config/ #testconfig.third=./config/ #testconfig.fourth=./config/
./application.properties
spa
testconfig.first=./ testconfig.second=./ #testconfig.third=./ #testconfig.fourth=./
classpath:/config/application.properties
testconfig.first=classpath/config/ testconfig.second=classpath/config/ testconfig.third=classpath/config/ #testconfig.fourth=classpath/config/
classpath:/application.properties
testconfig.first=classpath testconfig.second=classpath testconfig.third=classpath testconfig.fourth=classpath
输出以下:
2019-03-27 23:29:12.434 INFO 1335 --- [ main] com.example.properties.DemoApplication : No active profile set, falling back to default profiles: default first: ./config/ second: ./ third: classpath/config/ fourth: classpath 2019-03-27 23:29:13.052 INFO 1335 --- [ main] com.example.properties.DemoApplication : Started DemoApplication in 16.565 seconds (JVM running for 23.467)
加一个文件: classpath:/application-product.properties
testconfig.first=product-classpath testconfig.second=product-classpath
经过 spring.profiles.active
来指定环境所对应的 properties
文件:
运行 java -jar build/libs/properties-0.0.1-SNAPSHOT.jar --spring.profiles.active=product
, 输出以下:
2019-03-28 20:34:44.726 INFO 25859 --- [ main] com.example.properties.DemoApplication : The following profiles are active: product first: product-classpath second: product-classpath third: classpath/config/ fourth: classpath fifth: ./config/ sixth: ./config/ seventh: ./config/ eightth: ./config/
yaml
文件来代替 properties
文件。也能够使用 yaml
格式的文件。可是在同等目录下,properties
优先级高于 yaml
文件的配置信息。
新增文件 ./config/application.yml
testconfig: frist: ./config/yml second: ./config/yml
命令 java -jar build/libs/properties-0.0.1-SNAPSHOT.jar
输出为:
first: ./config/ second: ./config/yml third: classpath/config/ fourth: classpath fifth: ./config/ sixth: ./config/ seventh: ./config/ eightth: ./config/
app.name=MyApp app.description=${app.name} is a Spring Boot application