SpringBoot配置文件 springboot配置文件

1.配置文件的作用

配置文件在整个项目中是非常重要的,比如

数据库的连接信息(用户名密码),servlet是将配置信息写到代码中的,项目启动时还是需要读取配置信息

项目的启动端口,当项目的端口被占用时,可以通过配置文件直接修改端口信息,linux可以使用命令查看被占用的端口的进程,windows比较复杂,有时难以找到,通过配置文件修改项目端口号比较方便

第三方系统调用密钥等信息,第三方系统颁发的密钥存储在配置文件中,密钥直接写在程序中打包后变为class文件不能被修改,并且不安全,代码被下载后,密钥就被获得了.配置文件可以放在云端,进行分离,提升了安全性.有了配置文件也方便维护人员的修改.

用于发现和定位问题的普通日志和异常日志等

2.配置文件的格式

SpringBoot配置文件有两种格式

1.properties(默认)

2.yml(yaml)

这两种配置文件从功能上来说可以存在于同一个项目中,如果配置了相同的属性,那么以properties的生效,properties的优先级是高于yml的,但是properties配置信息加载完后也会加载yml的配置信息

虽然能并存,但是实际开发中通常会采用一种统一的方式,利于维护

3.配置文件说明

properties配置文件说明

基本语法:k=v形式配置

多个配置文件,换行写

分为

1.系统配置项(给Spring使用的),如端口号,server.port=8080/spring.datasource.url...

2.用户自定义配置项(非系统配置项):用户自定义的key

properties中:

 这里的中文重新打开后会乱码...或者没乱码但是重启后乱码了(重启前IDEA有缓存,可能不会乱码)

如果写了很多注释,重启后全部乱码,就会很难受

注释乱码原因:

编码格式: 项目启动后就不能修改了

解决方法:点击settings,将选项全都修改为UTF8后应用,新项目就会默认支持中文. 

本项目还是不支持,本项目编码格式已经不能修改

将原来的properties文件删除,重新创建一个properties文件 ,就能支持中文

yml能进行编码格式的修改,并且默认是UTF8,支持中文

 设置项目端口号

控制台打印端口号

 

 注释掉当前配置信息,使用yml配置,yml配置信息就会生效 

 t上面也说过,有相同项,以properties的配置信息为准, 它的优先级是高于yml的

删除注释,启动项目,就会发现端口号还是9090

 注意:每次修改配置项后,都要重启项目,不启动是不会生效的

 读取配置文件

在项目中要主动读取配置文件的内容,使用@Value注解实现

@Value注解使用${}格式读取

 

结果并不是hellozhangsan 

是因为读取配置文件内容有固定的格式,这样写相当于将studentname这个字符串赋值给了name ,没有读取配置项

所以要遵守约定,才能读取到配置文件的内容

 读取成功

 用了这个格式,如果没有这个配置项,启动时就会报错

因为这个本质还是DI,当项目启动时,容器会进行加载,加载时进行属性的设置,会检测有没有key值是student,没有发现key值,就会报错了

 读取配置文件注意:格式     ${key}

也能读取系统配置信息 

properties优点

1.是系统默认的配置文件

2.优先级比yml高

3.格式简单

缺点:写法比较冗余(包名必须全都写上,很多相同包名下的配置都要写上包名)

4.yml配置文件说明

yml优点

yml是YAML的缩写(Yet  Another Markup Language)另一种标记语言.

可读性高,写法简单,易于理解,语法和JSON相似

支持更多的数据类型,可以简单地表达数组,散列表,标量等数据形态.使用空白符进行缩进和大量依赖外观的特色,适合用来表达或编辑数据结构,各种配置文件等

支持更多的编程语言,不仅是在Java中使用

基本语法:

key: value

kv是冒号加空格构成的,空格不能省略

yml读取配置的⽅式和properties相同,使⽤@Value注解即可

没有空格,port就没有高亮,容器加载时是不会被识别的

还有缩进问题

启动后会直接报错,因为server下找不到aaaa

 aaaa前有两个tab,不是server下的配置信息

去掉一个tab后

 

 注意:yml写法简洁,但是非常灵活,容易出错,不适合新手

 再看个配置字符串的例子

 字符串类型的,获取之后结果如何?

结果:

什么都不加的,和加了单引号的,是什么内容就输出什么内容

加了双引号的,是原意输出,\n本来表示换行

还可表示其他数据类型

配置对象

读取对象时不能用@Value注解,要使用@Configuration注解实现

 还能配置一个对象,yml读取对象的实现:

这种写法也可以:

student: {id: 1,name: 张三,age: 18}

 

启动项目:

配置集合

 配置文件中也能配置集合

或者

collection: {name: [mysql,sqlserver,db2]}

也是使⽤@ConfigurationProperties来读取的

启动项目

5.设置不同环境的配置文件

 Spring Boot不同平台的配置规则:
1.必须有主配置文件,主配置文件名必须是application.yml(.properties)

主配置文件存放公共的内容,不同平台的配置文件存放有差异的内容

2.不同平台的配置文件,每个平台拥有一个配置文件,配置文件名称:application-xxx.yml(.properties)

 

#开发环境配置文件
server:
 port: 9090
#生产环境配置文件
server:
 port: 9393
#测试环境配置文件
server:
 port: 9898

 在主配置文件中设置运行环境

 spring.profiles.active=dev

 dev是可变的,可以设置为其他的,test/prod

然后启动项目,观察端口号,9090就是开发环境的端口号

作者:YoLo♪原文地址:https://blog.csdn.net/chenchenchencl/article/details/130475160

%s 个评论

要回复文章请先登录注册