SpringBoot-8-属性配置
本文主要介绍SpringBoot的属性配置,主要包括:
- 配置文件的格式和位置
- 配置文件的自定义属性
- 配置文件的多环境配置
文章最后我的公众号二维码,也可搜索springboot葵花宝典进行关注,回复:springboot,可以获取一些博主搜集的SpringBoot学习资料。
1.配置文件介绍
我们在使用SpringBoot进行开发的时候,虽然SpringBoot针对我们常用的开发场景提供了一系列的自动化配置,用于减少原来复杂但是很少改动的模板化内容。但是当我们遇到一些特殊场景的时候还是会修改配置内容,以满足这些特殊场景。并且到SpringCloud的时候,我们会有很多针对配置文件的工作去做,因此我们很有必要将SpringBoot中配置进行详细介绍。
1.1 文件格式
SpringBoot配置文件有两种格式:
- .properties : 配置文件通过**=**进行赋值,没有层次感
- yaml : 配置文件通过key:value分层进行赋值,比较有层次感,有序
yaml配置信息:
spring: application: name: part8server: port: 8088 servlet: context-path: /test
等价的properties配置
spring.application.name=part8server.servlet.context-path=/testserver.port=8088
注:** **@PropertySource
**注解是不支持对yaml、yml读取
1.2 文件位置
配置文件可以存放的位置
src\main\resources\config
src\main\resources
在文件存放位置中存在优先级:
src\main\resources\config
下的.properties覆盖src\main\resources
文件下的.properties相同属性。- 在相同位置下**.yml覆盖.properties**的相同属性。
例如:src\main\resources\config\application.properties
配置文件:
server.port=8888
src\main\resources\application.properties
配置文件
server.port=8088
启动后在控制台发现结果:
INFO 23792 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8888 (http) with context path ''
注:还可以通过@PropertySource(“classpath:config.properties”) 来读入任意其他设置文件。
1.3 自定义参数配置及读取
除了SpringBoot模块中特有的属性配置以外,我们还可以根据我们的开发需求,进行自定义属性配置,具体步骤:
在application.yml中配置
student: name : 张三 age: 20 sex: 男
a 使用@Value读取application.yml中配置
@RestControllerpublic class TestController { @Value("${student.name}") private String name; @Value("${student.age}") private String age; @Value("${student.sex}") private String sex; @GetMapping("/test") public String test(){ return "name: " + name+ " age: "+age+" sex: "+sex; }}
b 或者使用@ConfigurationProperties
@Data@Component@ConfigurationProperties("student")public class StudentProperties { private String name; private String age; private String sex;}
@Autowired private StudentProperties properties; @GetMapping("/test2") public String test2(){ return "name: " + properties.getName()+ " age: "+properties.getAge()+" sex: "+properties.getSex(); }
- Controller
- Component
运行http://localhost:8888/test 和http://localhost:8888/test 结果都为
name: 张三 age: 20 sex: 男
注@Value还支持二元操作符并支持嵌套
${property:default value}
1.4 SpringBoot的多环境配置
一般我们在开发一套系统以后,会有多个不同的环境系统,例如:开发,测试、上线等。不同环境中的数据库,服务地址,端口等都有可能不一样。最笨的办法是不同环境频繁打包然后对配置文件修改,这样容易发生人为错误。
SpringBoot多环境配置格式
- application-{profile}.properties
- application-{profile}.yml
其中**{profile}**表示环境,使用spring.profiles.active属性来启用对应的配置文件,例如
application-pro.yml 表示生产环境application-dev.yml 表示开发环境application-test.yml 表示测试
- 在IDEA调试的时候可以在IDEA中进行配置。如下:
JAR执行
命令行参数方式
java -jar xxx.jar --spring.profiles.active=test
JVM参数 -Dkey=value
java -jar xxx.jar Dspring.profiles.active=test
如果您觉得本文不错,欢迎Star
支持,您的关注是我坚持的动力!