springboot 中yml配置
springboot 中各种配置项纪录
1. @Value
最早获取配置文件中的配置的时候,使用的就是这个注解,SpEL表达式语言。
// 使用起来很简单
@Value("${config.demo.value:defaultValue}")
private String simpleValue;
2. @ConfigurationProperties
通常我们配置的时候,不仅仅是一个单独字段,可能是一组配置,用来组成一个对象。这个时候spring为我们提供了这个注解。
简单的对象,在yml里也可以很简单的写出来。直接把每一个字段写出即可。
而对复杂对象,如:list、map等的,就需要查一下资料了,这里简单记录一下写法,直接看代码。
# 配置示例
config:
demo:
value: testValue
simpleConfig:
config: testConfig
str1: abc,cde
str2:
- abc
- cde
configMap:
key1: value1
海贼王: 路飞
simpleConfigs:
- config: 罗宾
count: 1
- config: 乌索普
count: 1
- config: 索隆
count: 1
configObjMap:
key1:
config: value1
key2:
config: value2
pojo 对象定义如下:
@Data
@ConfigurationProperties(prefix = "config.demo")
@Configuration
public class ConfigDemo {
@Value("${config.demo.value:defaultValue}")
private String simpleValue;
/**===========简单对象===========*/
/**
* 对象
*/
private SimpleConfig simpleConfig;
/**
* 字符串数组1
*/
private List<String> str1;
/**
* 字符串数组1
*/
private List<String> str2;
/**
* 键值对
*/
private Map<String, String> configMap;
/**
* ===========多个复杂对象==========
*/
/**
* 对象集合
*/
private List<SimpleConfig> simpleConfigs;
/**
* 对象作为map值
*/
private Map<String, SimpleConfig> configObjMap;
@Data
public static class SimpleConfig { // 注意:这里需要内部类是public的,要不然注入的时候会出错。
private String config;
private int count;
}
}
以上就是各种情况的书写。其实也不难,list 就增加 - 来作为单个对象标识,而map就直接写key即可。
而spring在存储properties的时候是怎么处理的呢,我们可以断点一下 PropertyPlaceholderHelper,在这里我们可以看到存储各种配置的source如下图:

底层都是通过一个ResourceReloadingMap来存储的,那么存储list的时候,是什么结构呢,如下:

// 存储的时候是这样的:
simpleConfigs[0].config=configValue
simpleConfigs[0].count=countValue
...
所以最终都是通过键值对的方式,只是对应的格式,spring可以解析成对应的样子而已。
springboot 中yml配置的更多相关文章
- SpringBoot 使用yml配置 mybatis+pagehelper+druid+freemarker实例
SpringBoot 使用yml配置 mybatis+pagehelper+druid+freemarker实例 这是一个简单的SpringBoot整合实例 这里是项目的结构目录 首先是pom.xml ...
- (二)Redis在Mac下的安装与SpringBoot中的配置
1 下载Redis 官网下载,下载 stable 版本,稳定版本. 2 本地安装 解压:tar zxvf redis-6.0.1.tar.gz 移动到: sudo mv redis-6.0.1 /us ...
- SpringBoot中yaml配置对象
转载请在页首注明作者与出处 一:前言 YAML可以代替传统的xx.properties文件,但是它支持声明map,数组,list,字符串,boolean值,数值,NULL,日期,基本满足开发过程中的所 ...
- springboot 读取 yml 配置的几种方式
前言:在springboot 项目中一般默认的配置文件是application.properties,但是实际项目中我们一般会使用application.yml 文件,下面就介绍一下在springbo ...
- springboot application.yml配置学习
一.背景 为了更好的使用springboot,所以看一下application.yml配置这块.主要是看数据绑定这块. 主要参考:https://www.hangge.com/blog/cache/d ...
- SpringBoot的yml配置
Spring Boot的yml配置 #开发配置 spring: data: solr: host: http://localhost:6789/solr/mote mvc: view: # 页面默认前 ...
- springboot中xml配置之@ImportResource
springboot中进行相关的配置往往有java配置和xml配置两种方式. 使用java的方式配置只需要使用@configuration注解即可,而使用xml的方式配置的话需要使用@ImportRe ...
- Springboot中以配置类方式自定义Mybatis的配置规则(如开启驼峰映射等)
什么是自定义Mybatis的配置规则? 答:即原来在mybatis配置文件中中我们配置到<settings>标签中的内容,如下第6-10行内容: 1 <?xml version=&q ...
- 案例源码解读及思路:RabbitMQ在springboot中的配置
程序员的高级之处不是什么都会,而是对自己不会的进行抽象,然后完成自己的工作.比如对于RabbitMQ,按照字面理解,就将其看成Message Queue,也就是用来容纳对象的集合.很多功能都拆分给一个 ...
随机推荐
- 我是如何使计算提速>150倍的
我是如何使计算提速>150倍的 我的原始文档:https://www.yuque.com/lart/blog/lwgt38 书接上文<我是如何使计算时间提速25.6倍>. 上篇文章提 ...
- 20200416_Centos 7.2 在安装系统之前把数据备份出来
第一种方法: 起因: 服务器强制断电, 然后就再也启动不起来了, 进入救援模式, 一直卡死在 charoot /mnt/sysimages; 然后想在救援模式下的shell中挂载我的2T的移动硬盘, ...
- 偏微分方程数值解法的MATLAB源码
原文出处http://wenku.baidu.com/view/df412e115f0e7cd184253653.html 因为不太喜欢百度文库的格式,所以写到个人博客里面方便使用 <ifram ...
- 老猿学5G扫盲贴:3GPP规范文档命名规则及同系列文档阅读指南
专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt入门学习 老猿Python博文目录 老猿学5G博文目录 在学习5G规范过程中,有些内容把握不定的时候,有时 ...
- PyQt(Python+Qt)学习随笔:toolButton的toolButtonStyle属性
toolButtonStyle属性用于确认toolButton按钮显示文字.图标的方式,其类型为枚举类型 Qt.ToolButtonStyle,有如下值: ToolButtonIconOnly(值为0 ...
- 第15.12节PyQt(Python+Qt)入门学习:可视化设计界面组件布局详解
一.引言 在Qt Designer中,在左边部件栏的提供了界面布局相关部件,如图: 可以看到共包含有四种布局部件,分别是垂直布局(Vertical Layout).水平布局(Horizontal La ...
- [ACTF2020 新生赛]BackupFile && [ACTF2020 新生赛]Upload &&[GYCTF2020]Blacklist
[ACTF2020 新生赛]BackupFile 尝试找到源代码,加上题目是备份文件,猜测备份文件里面有网站的源代码,御剑扫描一下,就扫到index.php 访问index.php.bak 下载源代码 ...
- Scrum 冲刺 第二篇
Scrum 冲刺 第二篇 每日会议照片 昨天已完成工作 队员 昨日完成任务 黄梓浩 初步完成app项目架构搭建 黄清山 完成部分个人界面模块数据库的接口 邓富荣 完成部分后台首页模块数据库的接口 钟俊 ...
- css外边距重叠及避免方法
<html lang="en"> <head> <meta charset="UTF-8"> <meta name=& ...
- vue结合element-ui实现二级复选框checkbox
vue结合element-ui实现二级复选框checkbox 话不多说先上效果 交互:1.点击按钮全选,所有的checkbox全部选中:点击清空,所有的checkbox框都不选:点击确定获取选中的ch ...