Spring boot 读取配置文件(application.yml)中的属性值

2023-05-16

1、引入依赖

<!-- 支持 @ConfigurationProperties 注解 -->  
<dependency>  
    <groupId>org.springframework.boot</groupId>  
    <artifactId>spring-boot-configuration-processor</artifactId>  
    <optional>true</optional>  
</dependency> 

2、配置文件(application.yml)中配置各个属性的值:

myProps: #自定义的属性和值  
  simpleProp: simplePropValue  
  arrayProps: 1,2,3,4,5  
  listProp1:  
    - name: abc  
      value: abcValue  
    - name: efg  
      value: efgValue  
  listProp2:  
    - config2Value1  
    - config2Vavlue2  
  mapProps:  
    key1: value1  
    key2: value2  

3、创建一个bean来接收配置信息:

@Component  
@ConfigurationProperties(prefix="myProps") //接收application.yml中的myProps下面的属性  
public class MyProps {  
    private String simpleProp;  
    private String[] arrayProps;  
    private List<Map<String, String>> listProp1 = new ArrayList<>(); //接收prop1里面的属性值  
    private List<String> listProp2 = new ArrayList<>(); //接收prop2里面的属性值  
    private Map<String, String> mapProps = new HashMap<>(); //接收prop1里面的属性值  

    public String getSimpleProp() {  
        return simpleProp;  
    }  

    //String类型的一定需要setter来接收属性值;maps, collections, 和 arrays 不需要  
    public void setSimpleProp(String simpleProp) {  
        this.simpleProp = simpleProp;  
    }  

    public List<Map<String, String>> getListProp1() {  
        return listProp1;  
    }  
    public List<String> getListProp2() {  
        return listProp2;  
    }  

    public String[] getArrayProps() {  
        return arrayProps;  
    }  

    public void setArrayProps(String[] arrayProps) {  
        this.arrayProps = arrayProps;  
    }  

    public Map<String, String> getMapProps() {  
        return mapProps;  
    }  

    public void setMapProps(Map<String, String> mapProps) {  
        this.mapProps = mapProps;  
    }  
}  

启动后,这个bean里面的属性就会自动接收配置的值了。
4、单元测试用例:

@Autowired  
    private MyProps myProps;   

    @Test  
    public void propsTest() throws JsonProcessingException {  
        System.out.println("simpleProp: " + myProps.getSimpleProp());  
        System.out.println("arrayProps: " + objectMapper.writeValueAsString(myProps.getArrayProps()));  
        System.out.println("listProp1: " + objectMapper.writeValueAsString(myProps.getListProp1()));  
        System.out.println("listProp2: " + objectMapper.writeValueAsString(myProps.getListProp2()));  
        System.out.println("mapProps: " + objectMapper.writeValueAsString(myProps.getMapProps()));  
    }  

测试结果:

simpleProp: simplePropValue  
arrayProps: ["1","2","3","4","5"]  
listProp1: [{"name":"abc","value":"abcValue"},{"name":"efg","value":"efgValue"}]  
listProp2: ["config2Value1","config2Vavlue2"]  
mapProps: {"key1":"value1","key2":"value2"}  
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Spring boot 读取配置文件(application.yml)中的属性值 的相关文章

  • 新 Maven/Spring MVC 项目的最小 pom.xml 文件

    我对 Maven 和 Spring MVC 完全陌生 我想做的是使用 Maven 设置一个新的 Spring MVC 项目 希望这句话有意义 并使用 Eclipse 在 Tomcat 上运行我的 Web 应用程序 我正在按照此链接上的教程进
  • 获取在 mac 中启动时运行的 python 脚本

    如何让 python 脚本在每次计算机启动时运行 如何在启动时运行 shell 脚本 OSX http www osxfaq com Tutorials LearningCenter HowTo Startup index ws 在该脚本中
  • 如何制作通用的jpa存储库?我应该这样做吗?为什么?

    我是堆栈溢出的新手 并且正在使用 hibernate 和 mysql 处理 spring jpa 数据 我为每个实体类创建了一个 JpaRepository 但现在我觉得我应该对所有实体使用一个存储库 因为我所有的存储库都有通用的 CRUD
  • 在Spring+Wicket中上传文件

    要使 Java Web 应用程序 使用 Spring Wicket 开发 接受客户端文件上传到服务器上的特定目录 需要执行哪些步骤 在谷歌搜索这个问题的答案时 我看到建议 WEB INF some directory 应该用作上传位置 这是
  • 使用 spring data jpa 更新单个字段

    我正在使用 spring data 的存储库 非常方便 但我遇到了一个问题 我可以轻松更新整个实体 但我相信当我只需要更新单个字段时这是毫无意义的 Entity Table schema processors name ear attach
  • 使用 @Valid 进行 Spring 验证

    我正在验证传入属性 但验证器甚至捕获未注释的其他页面 Valid RequestMapping value showMatches spr method RequestMethod GET public ModelAndView showM
  • Apache Camel:如何存储变量以供以后使用

    在使用 Spring DSL 玩 Camel 时 我遇到了以下问题 假设预期的消息流如下所示 客户端将带有 XML 正文的 HTTP POST 消息发送给 CAMEL CAMEL 向服务器代理 HTTP POST 消息 并使用稍微调整的 U
  • 在单元测试中使用SpringRunner可以吗?

    我们正在与我的同事争论这种方法 他们说仅在集成或功能级别上使用 SpringRunner 问题是在下面的级别中使用它有什么优点和缺点 例如我有简单的豆 public class RewardDurationCalculator privat
  • 仅验证选定的休息端点:spring boot

    我有一个 Spring Boot Web 应用程序 暴露了一些休息端点 我想知道如何仅为选定的其余端点启用基本身份验证 假设我只想 employee id 请求进行身份验证并忽略所有其他其余端点 我正在使用以下代码 我的问题是antMatc
  • 数据库连接未使用 jpaFlowExecutionListener 关闭

    我正在使用 Spring Web Flow 来构建应用程序 我正在利用Flow Managed Persistence Context因此实体管理器在流程执行期间保持打开状态 我可以访问延迟加载的属性 类似于OpenEntityManage
  • Spring Data Redis JedisConnectionException:流意外结束

    雷迪斯3 0 5Spring数据Redis 1 3 6绝地武士2 6 3 我们的 Web 应用程序通过 pub sub 从 Redis 接收数据 还以键 值对的形式在 Redis 上执行数据读 写 读 写发生在监听线程 独立监控线程和htt
  • 使用表单主体的 Spring MVC 控制器方法映射

    我正在构建一个小型应用程序 作为工作中某些第三方库的客户端 API 指出Webhook需要响应一些异步事件 但除了更改之外 它们的所有方法都具有完全相同的签名 method调用之间的字段 例如 我有一个 method ping media
  • 通过 facebook 登录后设置 spring security 记住我 cookie

    我正在构建一个移动网络应用程序 可以选择通过 facebook twitter 登录 我希望应用程序通过 Spring security 的记住我功能记住登录 以便用户需要经常登录 我有可以调用 facebook 并获取可识别用户身份的 a
  • Spring Security Facebook Oauth2 重定向太多次

    我正在尝试按照 Spring security 中提到的示例为 facebook 实现 Oauth2 实现https spring io guides tutorials spring boot oauth2 https spring io
  • 在日志中显示 Spring 事务

    我为 spring 配置了事务支持 有什么方法可以记录事务以确保我正确设置所有内容 在日志中显示是查看正在发生的情况的好方法 in your log4j properties 对于替代记录器或 log4j 的 xml 格式 请查看文档 根据
  • 对于 .com 电子邮件地址,获取请求失败,因为 Spring 将其解释为扩展名

    参见下面2015年8月20日的编辑部分 我最近也遇到了类似的问题 获取请求仅适用于尾部斜杠 Spring REST 注释 https stackoverflow com questions 31117009 get request only
  • 在所有 SpringBootTest 中使用一个 Spring Boot 上下文

    我希望能够通过使用 junit 进行测试的不同类来缓存应用程序上下文 测试类是这样声明的 SpringBootTest RunWith SpringRunner class public class SomeIntegrationTest
  • 从数据库或Java对象动态加载spring bean属性)

    我有一个场景 我需要将属性从数据库或java对象加载到bean中 考虑这个例子
  • Spring中需要多个相同类型的bean

    将其标记为重复之前的请求 我浏览了论坛 但在任何地方都找不到该问题的解决方案 我正在使用 Spring 3 2 编写代码 一切都是纯粹基于注释的 该代码接收从不同 XSD 文件派生的 XML 文件 所以我们可以说 有五个不同的 XSD A1
  • 在 Spring 中以编程方式解析 AliasFor 注释值

    我有一个注释 Target ElementType TYPE Retention RetentionPolicy RUNTIME public interface A Class value 这是在课堂上使用的 B D class publ

随机推荐

  • 论文复现——Sphereface-Pytorch

    最近在写论文 xff0c 要做一些对比实验 xff0c 需要以Sphereface为基础 其实实验早该做了 xff0c 就是一直拖拖拖 唉拖延症患者 今天总算是把github上的代码跑通了 xff0c 赶紧做下小笔记 因为还要赶论文 xff
  • mysql学习-9.如何正确的使用索引

    1 索引的规则 1 1 等值匹配 假设索引 A select from table where A 61 xxx就是走索引的 1 2 最左侧列匹配 假设索引 A B select from table where A 61 xxx and
  • Python/matplotlib之【RuntimeWarning: More than 20 figures have been opened】

    Python matplotlib之 RuntimeWarning More than 20 figures have been opened 当绘图的过程中 xff0c 建立了大量的figure xff0c 就会报错 解决的方法 xff0
  • 【学习】《软件工程》期末考试卷A+参考答案

    2021 福师网院 软件工程 2020年期末考试卷A xff08 参考答案见底部 xff09 1 软件需求分析阶段的工作 xff0c 可以分为以下4个方面 xff1a 对问题的识别 分析与综合 编写需求分析文档以及 xff08 xff09
  • C#自定义控件

    一 开发环境和工具 1 WIN10系统 2 Visual Studio社区版 2019 xff08 C xff09 二 创建自定义控件窗体 添加一个自定义控件 xff0c 右键解决方案 xff0c 点击添加 xff0c 然后点击用户控件 选
  • vdo 虚拟数据优化器详解以及配置

    VDO 我的博客 xff1a https blog itwk cc vdo xff08 虚拟数据优化器 xff09 是一个内核模块 xff0c 目的是通过重删 xff08 重复数据删除 xff09 减少磁盘的的空间占用 xff0c 以及减少
  • ROS 自定义消息类型方法

    流程 1 在package中新建文件夹名为msg 2 在msg文件夹中创建消息 xff08 此处以my msg msg xff09 为例 xff0c 注意的是要以msg为后缀名 内容举例如下 xff1a int32 data1 float6
  • 计算机网络第七版笔记--第一章

    第一章概述 1 1 计算机网络在信息时代中的作用 1 互联网是覆盖全球的 xff0c 具有两个重要基本特点 xff0c 即连通性和共享 1 2互联网的概述 1 2 1网络的网络 1 计算机网络 xff08 简称网络 xff09 由若干结点
  • 0.1+0.2不等于0.3 原因

    在计算机进行数字计算时会先将十进制转化为二进制进行计算 xff0c 由于二进制表示的有限数字不能超过 52 位在 JavaScript 里是不能精确存储的 xff0c 计算机进行了四舍五入这时造成了数字误差导致计算结果不为0 3 总结 xf
  • mac 终端 配置代理

    即使打开代理 xff0c mac终端默认不走 xff0c 需要配置 一 复制终端代理命令 export http proxy 61 http 127 0 0 1 1089 export https proxy 61 http 127 0 0
  • 【linux】安装Linux的交叉编译工具链

    1 linux中装软件的特点 linux中安装软件比windows中复杂 linux中安装软件一般有以下几种方法 xff1a 第一种 xff1a 在线安装 譬如ubuntu中使用apt get install vim来安装vim软件 第二种
  • 基于STM32F429 的 FreeRTOS 环境下 LCD1602驱动实现

    本文是基于STM32F429在FreeRTOS下的HAL库开发 xff0c 并验证在多任务不同优先级情况下运行情况 LCD1602介绍 xff1a 是一个只能显示字母 数字 符号的点阵型液晶模块 一行可以显示16个字符 xff0c 可以显示
  • 查询MYSQL和查询HBASE速度比较

    MySQL xff0c 关系型数据库 xff1b HBase xff0c NoSql数据库 查询Mysql和查询HBase xff0c 到底哪个速度快呢 xff1f 与一些真正的大牛讨论时 xff0c 他们说HBase写入速度 xff0c
  • Office Online Server 在线编辑Office文档,安装部署

    最近公司项目需求 xff0c 需要搭建一个office预览编辑的服务 xff0c 在网上找到了Office Online Server在线编辑office文档 xff0c 以下把自己搭建过程记录 一 Office Online Server
  • 安装vmware搭建k8s集群(亲试无坑)

    一 前言 下面这个坑我也遇到了 xff0c 同时看到别人的博客也遇到了 xff0c 害的我废了一天的时间来解决这个问题 xff0c 但是毫无卵用 xff0c 气的我快吐血 xff1a 问题 xff1a 因为k8s把版本的问题 xff0c 一
  • Kaniko构建镜像

    一 前言 最近公司重构devops相关的一系列平台 xff0c 对于流水线中用容器方式交付的产品越来越多 xff0c 为了更加安全的方式来构建容器镜像 xff0c 采用Kaniko构建 在了解如何用Kaniko构建镜像之前 xff0c 我们
  • Mysql批量插入对比(附github仓库demo)

    前言 本文记录个人使用MySQL插入大数据总结较实用的方案 xff0c 通过对常用插入大数据的4种方式进行测试 xff0c for循环单条拼接SQL批量插入saveBatch 循环 43 开启批处理模式 最近趁空闲之余 xff0c 在对My
  • docker内部如何访问宿主机上的服务或者应用

    背景 在docker启动的容器中需要访问宿主机上的服务 xff0c 所以在容器中通过localhost或者127 0 0 1 但是这样是不行的 访问url xff1a http 127 0 0 1 8088 或者http localhost
  • Kruise Rollout v0.3.0:手把手教你实战操作Deployment 分批发布和流量灰度

    helm3 安装 kubectl版本 xff1a v1 20 9 heml版本 xff1a v3 1 2 span class token punctuation span root 64 k8smaster peishunwu span
  • Spring boot 读取配置文件(application.yml)中的属性值

    1 引入依赖 span class hljs comment lt 支持 64 ConfigurationProperties 注解 gt span span class hljs tag lt span class hljs title