(超详解)SpringBoot初级部分-配置-03
Posted LL.LEBRON
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了(超详解)SpringBoot初级部分-配置-03相关的知识,希望对你有一定的参考价值。
文章目录
SpringBoot-配置-03
该文章参考:黑马SpringBoot
1.配置文件分类
SpringBoot是基于约定的,所以很多配置都有默认值,但如果想使用自己的配置替换默认配置的话,就可以使用 application.properties
或者application.yml(application.yaml)
进行配置。
-
properties:
server.port=8080
-
yaml:
server: port: 8080
总结:
- SpringBoot提供了2种配置文件类型:
properteis
和yml/yaml
- 默认配置文件名称:
application
- 在同一级目录下优先级为:
properties > yml > yaml
2.yaml
2.1yaml定义
yaml:YAML全称是 YAML Ain’t Markup Language 。YAML是一种直观的能够被电脑识别的的数据数据序列化格式,并且容易被人类阅读,容易和脚本语言交互的,可以被支持YAML库的不同的编程语言程序导入,比如: C/C++, Ruby, Python, Java, Perl, C#, php等。YML文件是以数据为核心的,比传统的xml方式更加简洁。 YAML文件的扩展名可以使用.ym
l或者.yaml
。
对比:
-
properties:
server.port=8080 server.address=127.0.0.1
-
xml:
<server> <port>8080</port> <address>127.0.0.1</address> </server>
-
yaml:
server: port: 8080 address: 127.0.0.1
可以看出:对比其他两种方式,yaml更简洁,以数据为核心。
2.2yaml基本语法
- 大小写敏感
- 数据值前边必须有空格,作为分隔符
- 使用缩进表示层级关系
- 缩进时不允许使用Tab键,只允许使用空格(各个系统 Tab对应的 空格数目可能不同,导致层次混乱)。
- 缩进的空格数目不重要,只要相同层级的元素左侧对齐即可
#
表示注释,从这个字符一直到行尾,都会被解析器忽略。
2.3yaml数据格式
-
对象(map):键值对的集合
person: name: zhangsan # 行内写法 person: {name: zhangsan}
-
数组:一组按次序排列的值
address: - beijing - shanghai # 行内写法 address: [beijing,shanghai]
-
纯量:单个的,不可再分的值
msg1: 'hello \\n world' # 单引忽略转义字符 msg2: "hello \\n world" # 双引识别转义字符
2.4yaml参数引用
name: lisi
person:
name: ${name} # 引用上边定义的name值
3.读取配置文件内容
先预先准备好测试的ymal文件:
name: xpp
person:
name: ${name}
age: 23
address:
- benjing
- shanghai
address:
- benjing
- shanghai
msg1: 'hello \\n springboot'
msg2: "hello \\n springboot"
3.1@Value
@Value("${name}")
private String name;
@Value("${person.name}")
private String name1;
@Value(("${address[0]}"))
private String address1;
@Value("${msg1}")
private String msg1;
@Value("${msg2}")
private String msg2;
@RequestMapping("/hello2")
public String hello2(){
System.out.println(name);
System.out.println(name1);
System.out.println(address1);
System.out.println(msg1);
System.out.println(msg2);
return "Hello SpringBoot !";
}
输出结果:
xpp
xpp
benjing
hello \\n springboot
hello
springboot
3.2Environment
@Autowired
private Environment env;
@RequestMapping("/hello2")
public String hello2(){
System.out.println(env.getProperty("name"));
System.out.println(env.getProperty("person.age"));
System.out.println(env.getProperty("address[0]"));
return "Hello SpringBoot !";
}
输出:
xpp
23
benjing
3.3@ConfigurationProperties
准备一个Person类:
@Component//表示这个类被spring识别了
@ConfigurationProperties(prefix = "person")//绑定前缀
//下面四个注解为LomBok提供的,简化开发,自动帮我们写好get,set,有参,无参和toString方法
@Data
@NoArgsConstructor
@AllArgsConstructor
@ToString
public class Person {
private String name;
private Integer age;
private String[] address;
}
测试:
@Autowired
private Person person;
@RequestMapping("/hello2")
public String hello2(){
System.out.println(person);
return "Hello SpringBoot !";
}
输出结果:
Person(name=xpp, age=23, address=[benjing, shanghai])
4.profile
我们在开发Spring Boot应用时,通常同一套程序会被安装到不同环境,比如:开发、测试、生产等。其中数据库地址、服务器端口等等配置都不同,如果每次打包时,都要修改配置文件,那么非常麻烦。profile功能就是来进行动态配置切换的。
4.1profile配置方式
(1)多profile文件方式
提供多个配置文件,每一个代表一种环境:
application-dev.properties/yml
开发环境application-test.properties/yml
测试环境application-pro.properties/yml
生产环境
注意!:格式必须为application-xxx.properties/yml
在主配置文件application.properties
选择用哪种环境:
格式:spring.profiles.active=xxx
spring.profiles.active=dev
(2)yaml多文档方式
---
用来划分yaml文件区域
---
server:
port: 8081
spring:
config:
activate:
on-profile: dev
---
server:
port: 8082
spring:
config:
activate:
on-profile: test
---
server:
port: 8083
spring:
config:
activate:
on-profile: pro
---
spring:
profiles:
active: test
4.2profile激活方式
(1)配置文件
即上面所讲的:在配置文件中配置:spring.profiles.active=dev
(2)虚拟机
在VM options
指定:-Dspring.profiles.active=xxx
(3)命令行参数
java –jar xxx.jar --spring.profiles.active=xxx
①直接在Program arguments
配置
②打包方式配置
进入target文件夹(快捷键Ctrl+Alt+F12
)
在当前目录打开cmd
输入java –jar xxx.jar
启动SpringBoot项目
输入java –jar xxx.jar --spring.profiles.active=xxx
即可更改环境
5.内置配置加载顺序
Springboot程序启动时,会从以下位置加载配置文件:
file:./config/
:当前项目下的/config目录下file:./
:当前项目的根目录classpath:/config/
:classpath的/config目录classpath:/
:classpath的根目录(之前我们用的就是这种)
加载顺序为上文的排列顺序,高优先级配置的属性会生效
6.外部配置加载顺序
通过官网查看外部属性加载顺序:
最后喜欢的小伙伴别忘了一键三连哦🎈🎈🎈
以上是关于(超详解)SpringBoot初级部分-配置-03的主要内容,如果未能解决你的问题,请参考以下文章