您现在的位置是: 首页 > 汽车排行榜 汽车排行榜
springboot如何读取配置文件中的参数_springboot读取配置文件的值_1
ysladmin 2024-07-31 人已围观
简介springboot如何读取配置文件中的参数_springboot读取配置文件的值 springboot如何读取配置文件中的参数是一个非常重要的话题,可以从不同的角度进行思考和讨论。我愿意与您分享我的见解和经验。1.Spr
springboot如何读取配置文件中的参数是一个非常重要的话题,可以从不同的角度进行思考和讨论。我愿意与您分享我的见解和经验。
1.SpringBoot使用配置类映射yml配置文件信息
2.SpringBoot配置文件存放位置以及读取顺序
3.Spring Boot 第二弹,配置文件详解-史上最全
4.Spring Boot xml里获取yml文件里的参数值
5.springboot配置文件总结
SpringBoot使用配置类映射yml配置文件信息
使用configurationProperties注解并指明在配置文件中的前缀,然后用component注解注册进ioc容器。
我这里定义的两个静态内部类,同时创建了各自的实例,比如这个Email静态内部类中有三个属性,那么配置文件就可以是mq.myrabbit.email.queue来对静态内部类中的属性进行一个映射
在yml中写配置
项目编译后,在yml中写配置会自动显示出来自己定义的配置映射类所具有的属性,如下图所示:
然后在yml配置文件中,写各个配置,配置类就会读取到了
SpringBoot配置文件存放位置以及读取顺序
今日份鸡汤:一岁一礼,一寸欢喜,往后余生,积极向上的生活,热气腾腾的活着。1、请求路径中带参数 使用 @PathVariable 获取路径参数。即url/{id}这种形式。
demo:
运行结果展示:
2、@RequestParam 获取查询参数。即url?name=这种形式,用于get/post。springboot默认情况就是它,类似不写注解
demo:
运行结果展示:
3、@RequestBody获取POST请求参数
demo:
运行结果展示:
4、请求头参数以及Cookie
(1)@RequestHeader
(2)@CookieValue
demo:
方式一:
运行结果展示:
方式二:
运行结果展示:
Spring Boot 第二弹,配置文件详解-史上最全
默认情况下,我们可以将lication.properties或者lication.yaml(为了方便演示,本文以下均以lication.properties介绍)放置在如下四处:
1.1、idea中,为了我们本地方便开发测试,我们在此处创建一个config目录,然后把lication.properties放进去,项目正常运行。
jar包会自动生成在target目录下。
我们将生成的jar包,复制出来,到另外文件夹进行运行,比如,我现在该jar包复制到test目录下,但是这个时候是起不来,因为没有配置文件,虽然我们在idea里面是有config目录的,但是它并不没有被打包进去。我们要把config目录也复制过来,跟该jar包放在同一个目录下。
在此处,我们可以使用ja -jar demo-0.01-SNAPSHOT来运行项目。
正常运行。
当我们将其打成jar包时,lication.properties同样不会被打包进jar包中。需要另外复制出来和jar包放在才能正常运行。
推荐以上两种方式来放置配置文件,如果不写开发,测试,和生产好几套环境配置文件的话,就可以直接打开配置文件,改成自己需要的配置即可。
以下两种方式是将该配置文件打包在jar包里面了,即便只改一个端口号,开发人员先改配置文件,再打包,再运行。此处也记录下,并解开jar包,看下该配置文件被打包后,放置的位置。
打包后,如下图,jar包再target里面,我们寻找下lication.properties文件。为了方便演示,我们将target目录下的demo-0.0.1-SNAPSHOT.jar放到一个新目录给它解压开,找下该配置文件,我放置到了一个test目录下。
解压后:如下图,我们进入目录
发现config目录被放置在classes目录下。然后这也就让我们明白了,什么是classpath?classpath的路径到底指的是哪里,在idea中我们就把它放置在resource目录,该目录就是表示classpath。而被打成jar包后classes目录就是所谓的classpath。
所有的yaml文件,同理。
Spring Boot xml里获取yml文件里的参数值
? Spring Boot 官方 提供了两种常用的配置文件格式,分别是 properties 、 YML 格式。相比于 properties 来说, YML 更加年轻,层级也是更加分明。强烈推荐使用 YML 格式
? Spring Boot项目 启动会扫描以下位置的 lication.properties 或者 lication.yml 作为默认的配置文件.
徒手撕源码
内部类Loader的load方法
getSearchLocations()方法
asResolvedSet()
下面给出优先级 从高到低 的配置文件排列顺序:
以设置应用端口为例 初体验Spring Boot配置文件
properties后缀结尾(lication.properties)
yml/yaml后缀结尾(lication.yml/lication.yaml)
数字,字符串,布尔,日期
对象、Map
数组
数字,字符串,布尔,日期
对象、Map
数组
@ConfigurationProperties(prefix = "person")详解
标注在类上
标注在方法上
综上所述
? @ConfigurationProperties 注解能够轻松的让配置文件跟实体类绑定在一起。
?值得关注的是: @ConfigurationProperties 这个注解仅仅是支持从 Spring Boot的默认配置文件 中取值,也就是 lication.properties 、 lication.yml 、 lication.yaml ,那我们如何从自定义配置文件取值呢?
?别着急,有解决办法,那就是再加一个注解: @PropertySource(value = "classpath:custom-profile.properties") ,下面会有对 @PropertySource 注解的介绍。请耐心往下面看。
使用@PropertySource注解
对应配置文件
创建两个配置文件 custom-profile.yml、custom-profile1.yml ,如下去引入。
我们可以通过控制变量法进行测试,具体过程我这里就不赘述了。
直接说 结论 吧: Spring加载顺序 为 从左到右顺序加载 ,后加载的会 覆盖 先加载的属性值。
另外需要注意的是 : @PropertySource 默认加载 xxx.properties类型 的配置文件,不能加载 YML格式 的配置文件。如何解决呢?下面来解决这一问题
对应配置文件:
编写PropertiesController
扩展功能
lication.yml 主配置文件
lication-dev.yml 开发配置文件
lication-prod.yml 生产配置文件
lication-test.yml 测试配置文件
(1)主配置文件:配置激活选项
(2)其他配置文件:指定属于哪个环境(同yml,只不过表现形式是 key=value 的,三个配置文件分别是: lication-dev.properties , lication-prod.properties , lication-test.properties )
?无论是使用上述 多文档块 的方式,还是新建 lication-test.yml 文件,都可以在配置文件中指定 spring.profiles.active=test 激活指定的profile。
感谢阅读小生文章。祝大家早日富可敌国,实现财富自由。
写文不易 ,一定要 点赞、评论、收藏哦 , 感谢感谢感谢!!!
springboot配置文件总结
这个需求是想要动态查看lo生的。比如有时候需要logback需要打开debug级别的日志打印,而有时候又只想打开info级别的。利用springProfile 标签
这里的ERROR是默认的级别
--logging.logLevel=INFO 意思是指定设置 logging.logLevel 这个值为INFO,这样就重写了默认的ERROR。后面那个 --spring.xxx.xxx=xxx 是为了举例如果有多个启动参数的话就这样接下去敲就行
具体就填你自己的路径就行了
springboot 本身支持多种灵活的配置方式,为开发 springboot 程序带来了很大的灵活性和扩展性,但是同时由于太灵活,经常会导致明明配置了相关属性,却没有生效。
本文总结了 springboot 配置文件的原理以及多个配置文件生效的顺序。
springboot 配置文件支持灵活的路径,以及灵活的文件名,用一个变量表达式总结如下:
部分源码如下:
当满足上述变量表达式的配置文件有多个时,会有一个配置的优先级。设
上面每个条件组合起来,则最多有配置文件如下,且顺序从上到下:
获取属性时,按从上到下的顺序遍历由上述文件生成的属性对象 PropertySource ,如果遇到匹配的key直接返回。
总结一下:就是如果同一个key的属性只出现一次,则直接取该值即可。如果同一个key的属性出现多次,则取顺序靠前的属性对象。另外其中每个文件都是可选的。
需要注意的一点是:如果在同一个 location 下配置了多个文件名一样的文件,则只会取一个,比如在 classpath:/ ,有如下两个文件 lication.yml :
则只会根据 classloader 的 classpath 列表,选取第一个出现的文件。因为 springboot 加载配置文件时最底层是使用的下面的方法:
这两个方法只会获取 classloader 类的 ucp 属性里面第一个匹配到的值。如果对 springboot 自身的机制不满意,想获取所有的classpath:/路径下面的 licaiton.yml 文件,可以使用下面的方法:
本文总结了 springboot 配置文件的原理以及多个配置文件生效的顺序。如果存在增加了配置文件或者在配置文件里面增加了属性却没有生效,可以参考上面的 springboot 配置文件表达式和配置文件生效顺序进行排查。
后面还会有一篇文章讨论基于 springboot 配置原理如何实现自定义的配置读取方式。
好了,今天关于springboot如何读取配置文件中的参数就到这里了。希望大家对springboot如何读取配置文件中的参数有更深入的了解,同时也希望这个话题springboot如何读取配置文件中的参数的解答可以帮助到大家。