SpringBoot-配置文件

发布时间:2022-06-27 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了SpringBoot-配置文件脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

properties

SprintBoot对于传统Spring的一个很大的优点就在于比较方便的配置文件,在这里总结一下。

在boot中可以有3种配置文件。

最常见的就是application.properties文件,也是书写常见的键值对形式,也是我一直以来都比较喜欢的一种配置文件形式,当时觉得yml的格式太丑了,而且可能缩进看上去不太舒服。

在application.properties中书写key-value形式的配置形式,配置也一般以前缀形式出现,如果不太记得,也可以去spring的官网查看,比如服务器tomcat的配置一般以server开头,日志配置以logging开头等。

同时,boot也配置了大量默认值,很多值也在引入的starter中配置好了。

另外,boot提供了另外的两种格式,yml和yaml格式。

如果boot中三种配置文件都配置了,优先级而言properties gt yml gt yaml,不同配置文件中相同配置按照优先级相互覆盖,不同文件的不同配置则全部保留。

yaml

yaml是一种新的数据序列化形式,有许多优点,容易阅读,并且容易和脚本语言交互,以数据为中心,重数据轻格式。有两种拓展名,yml和yaml都是正确的拓展名,但是一般来说前者更加主流。

规则:

  • 大小写敏感;
  • 属性的层级关系使用多行来描述,每行结尾使用冒号结束;
  • 使用缩进代表层级关系,同层次左侧对齐,只允许使用空格,不能使用tab;
  • 属性值前面要有一个空格,名和值之间使用冒号+空格进行分割;
  • 代表注释;

核心规则:数据前面要有空格

字面值表示方式:

boolean: TRUE                        #TRUE,true,True,False,false,FALSE均可
float: 3.14                          #6.8523015e+5支持科学计数法
int: 123                             #0b1010_0110_1010_1110 支持二进制、八进制、十六进制
null: ~                              #使用~表示null
string: HelloWorld                   #字符串可以直接书写
string2: "HelloWorld"                #可以用双引号包裹特殊字符
date: 2021-12-25                     #日期必须用yyyy-MM-dd格式
datetime: 2018-02-17T15:02:31+08:00  #日期与时间之间使用T连接,最后用+代表时区

数组表示形式:

在属性名书写位置下方使用减号作为数据的开始符号,每行书写一个数据,减号与数据之间空格分隔

data:
  - 1
  - 2
  - 3
 subject:
  - Java
  - 前端
  - 运维
  - 测试
enterprise:
  name: zhangsan
  age: 20
  subject:
  	- Java
  	- 计组
  	- 计网
 
 likes: [吃饭,睡觉,打豆豆] #数组简略形式

对象数据格式:

users
  - name: Tom
  	age: 4
  - name: Jack
  	age: 5
  - name: zhangsan
  	age: 6
 users1:
  -
  	name: Tom
  	age: 33
  -
  	name: Jack
  	age: 44
 users2: [ {name:zhangsan, age:4}, {name:lisi, age:5}] #对象数组简略形式

boot中读配置

单一数据

使用@Value注解和SpEL表达式读取配置的值如@Value({name})即可读取到默认配置文件中名为name的配置信息。

表示层级关系时,使用.即可,如@Value({user.name})即可读取到user.name这个配置的值。

读取数组中的某一项时,@Value({likes[0]})即可读取到likes数组中的第1项。

变量引用

在yaml中可以设置变量的形式来减少同一前缀的配置项书写。

如:

baseDir: C:Windows
tempDir: {baseDir}temp

这样就可以引用定义的baseDir,更加方便的修改了。

mrbird
  blog
    name: mrbird's blog
	title: Spring Boot
	wholeTitle: {mrbird.blog.name}--{mrbird.blog.title}

全部数据

读取配置文件中的全部配置信息,boot提供了Environment对象进行配置信息的封装,这其中封装了配置文件中的全部信息。

可以使用getProperty方法获取配置的值。

对象数据

对于一个完整的配置项来说,配置的SpEL表达式可能会很长,不方便记忆,所以可以使用配置的对象形式来加载配置信息。通常使用@ConfigurationProperties(prefix="xxx.yyy")来加载。

可以预先定义好对象用于封装配置文件中的数据,由spring来加载数据到对象中。

创建的类要有getter和setter方法,且属性名要对应上,且类要加入spring容器来管理,在配置类上加入@Component注解使其注入到容器中,或是在需要用到这个封装类的地方使用@EnableConfigurationProperties来注入配置信息,该注解用于开启对@ConfigurationProperties的支持。

@EnableConfigurationProperties 文档中解释: 当@EnableConfigurationProperties注解应用到你的@Configuration时, 任何被@ConfigurationProperties注解的beans将自动被Environment属性配置。 这种风格的配置特别适合与SpringApplication的外部YAML配置进行配合使用。

在类上方配置@ConfigurationProperties指定加载的数据,注解中值为配置的前缀prefix。

如下所示:

@Data
@ConfiguraionProperties(prefix = "datasource")
@Component
public class MyDataSource {
	private String driver;
	private String url;
	private String username;
	private String password;
}

更换配置来源

在boot中通常默认配置信息是从application.properties中读取,但是对于有些信息,也可以配置在其他文件中,使用@PropertySource(path="classpath:xxx.properties")的方式执行配置来源后,再配置@ConfigurationProperties来指定前缀读取配置信息。

常用注解

@PorpertySource

用于向容器中导入自定义配置信息,一般用于导入.properties的属性配置文件,无法解析.yml文件。

@ImportResource

也用于向容器中导入Bean以及配置信息,一般用于导入.xml的属性配置文件。在boot中用得比较少,已经被配置类所取代,如果要在boot中使用,要放在配置启动类上。

@Configuration

用来标注该类是作为bean定义的源,相当于配置标签。此外该注解标注的类允许通过调用同一类的其他@Bean标注的方法表示bean之间的依赖关系。

@Bean

标注在方法上,用于指示方法的返回值的实例化、配置和初始化都由IOC容器来管理。

比较通俗的解释是@Configuration标注的类等同于一个xml文件,而@Bean标注的方法等同于一个标签。

@ConfigurationProperties

将配置文件中以指定前缀的配置进行导入并绑定,作用与@Value类似,但是更加方便。

@EnableConfigurationProperties

使得配置了@ConfiguraionProperties的配置类生效,即引入该配置类,这样前者的配置类可以不用交由IOC容器来管理。

脚本宝典总结

以上是脚本宝典为你收集整理的SpringBoot-配置文件全部内容,希望文章能够帮你解决SpringBoot-配置文件所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: