脚本宝典收集整理的这篇文章主要介绍了SpringBoot-配置文件,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
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是一种新的数据序列化形式,有许多优点,容易阅读,并且容易和脚本语言交互,以数据为中心,重数据轻格式。有两种拓展名,yml和yaml都是正确的拓展名,但是一般来说前者更加主流。
规则:
核心规则:数据前面要有空格
字面值表示方式:
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}] #对象数组简略形式
使用@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
标注在方法上,用于指示方法的返回值的实例化、配置和初始化都由IOC容器来管理。
比较通俗的解释是@Configuration标注的类等同于一个xml文件,而@Bean标注的方法等同于一个
@ConfigurationProperties
将配置文件中以指定前缀的配置进行导入并绑定,作用与@Value类似,但是更加方便。
@EnableConfigurationProperties
使得配置了@ConfiguraionProperties的配置类生效,即引入该配置类,这样前者的配置类可以不用交由IOC容器来管理。
以上是脚本宝典为你收集整理的SpringBoot-配置文件全部内容,希望文章能够帮你解决SpringBoot-配置文件所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。