Spring Boot读取配置的几种方式

Spring Boot读取配置的几种方式,第1张

在applicationyml或者properties文件中添加:

infoaddress=USA

infocompany=Spring

infodegree=high

激活 @ConfigurationProperties

我们可以通过下面几种方式将其添加到应用上下文中

首先,我们可以通过添加 @Component 注解让 Component Scan 扫描到

资源目录下建立config/db-configproperties:

dbusername=root

dbpassword=123456

@Autowired

private Environment env;

// 获取参数

String getProperty(String key);

@conditionalonproperty(name = "XXX",havingValue = "true")

参考文献

ConfigFileApplicationListener 主要作用就是读取应用的配置文件并add到Environment的PropertySources列表里

Springboot应用在启动的时候准备好了环境后就会触发 ApplicationEnvironmentPreparedEvent 事件就开始执行读取配置的逻辑:

首先加载当前激活的Profile列表

然后从默认的 classpath:/,classpath:/config/,file:/,file:/config/ 这四个目录下

查找默认的application-{profile}名字对应的配置文件,配置文件格式支持两大类(Properties和Yaml)既:properties xml yml yaml

可以修改默认的配置文件名字(默认:application),可以指定多个比如 --springconfigname= application,demo

可以修改默认的配置文件路径,比如 --springconfiglocation= file:///C:/config/ (目录结尾不带“/”会按照文件处理,而不是目录,容易掉坑)

阅读源码入口就从他的onApplicationEvent开始跟即可,将自身添加到postProcessor列表里并执行postProcessEnvironment方法,核心逻辑是靠一个Loader内部类

new Loader(environment, resourceLoader)load()

大概就是,如果没有springprofilesactive 和 springprofilesinclude都没有特别指定激活的profile的话

没有特别指定profile的话就是:null + default,也就是我们常见的applicationproperties 和 application-defaultproperties这种

如果指定了那就是:null + 已经激活(pre-existing)的profile + springprofilesactive + springprofilesinclude

举个例子,假如激活了多个profile比如:--springprofilesactive=prd1,prd2,最终优先级上prd1 > prd2 > default(null)

一、YAML基本语法

二、YAML支持的数据格式

三、读取yml配置文件

四、测试

一、YAML基本语法以缩进代表层级关系

缩进不能使用tab,只能用空格

空格个数不重要,但是同一层级必须左对齐

大小写敏感

数据格式为,名称:(空格)值

注释单行用#,只能注释单行

二、YAML支持的数据格式字面量:数字、字符串、布尔等不可再分的值

字符串默认不需要加单引号或者双引号,如果加双引号,它不会转义字符串里面的特殊字符,而加单引号,则会转义字符串里面的特殊字符,意思就是将特殊字符直接变为字符串输出。

通过获取文件的绝对路径,然后获取到文件流,装到 Properties 中,这样来使用InputStream inputStream=thisgetClass()getResourceAsStream("") 会指定要加载的资源路径与当前类所在包的路径一致。因此能正常读取文件。该问题大家需要注意哟!

springboot中有三种方式可以获取yml配置文件中的配置内容。

yml如下

注意,使用ConfigurationProperties后可能会有如下报错:

虽不影响运行,但是很碍眼,可通过在springboot项目的pom文件中添加如下依赖解决:

分别访问三个测试接口:

最近搞了一个springboot的项目,但是在项目部署的时候遇到一个问题:就是我将项目导出为war包,然后用java -jar 运行时,项目中文件上传的功能无法正常运行,其中获取到存放文件的目录的绝对路径的值为空,文件无法上传,试了很多方法 貌似是因

以上就是关于Spring Boot读取配置的几种方式全部的内容,包括:Spring Boot读取配置的几种方式、Springboot配置文件读取-ConfigFileApplicationListener、springboot中yml日志目录的时间怎么取等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9323904.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存