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配置的更多相关文章

  1. SpringBoot 使用yml配置 mybatis+pagehelper+druid+freemarker实例

    SpringBoot 使用yml配置 mybatis+pagehelper+druid+freemarker实例 这是一个简单的SpringBoot整合实例 这里是项目的结构目录 首先是pom.xml ...

  2. (二)Redis在Mac下的安装与SpringBoot中的配置

    1 下载Redis 官网下载,下载 stable 版本,稳定版本. 2 本地安装 解压:tar zxvf redis-6.0.1.tar.gz 移动到: sudo mv redis-6.0.1 /us ...

  3. SpringBoot中yaml配置对象

    转载请在页首注明作者与出处 一:前言 YAML可以代替传统的xx.properties文件,但是它支持声明map,数组,list,字符串,boolean值,数值,NULL,日期,基本满足开发过程中的所 ...

  4. springboot 读取 yml 配置的几种方式

    前言:在springboot 项目中一般默认的配置文件是application.properties,但是实际项目中我们一般会使用application.yml 文件,下面就介绍一下在springbo ...

  5. springboot application.yml配置学习

    一.背景 为了更好的使用springboot,所以看一下application.yml配置这块.主要是看数据绑定这块. 主要参考:https://www.hangge.com/blog/cache/d ...

  6. SpringBoot的yml配置

    Spring Boot的yml配置 #开发配置 spring: data: solr: host: http://localhost:6789/solr/mote mvc: view: # 页面默认前 ...

  7. springboot中xml配置之@ImportResource

    springboot中进行相关的配置往往有java配置和xml配置两种方式. 使用java的方式配置只需要使用@configuration注解即可,而使用xml的方式配置的话需要使用@ImportRe ...

  8. Springboot中以配置类方式自定义Mybatis的配置规则(如开启驼峰映射等)

    什么是自定义Mybatis的配置规则? 答:即原来在mybatis配置文件中中我们配置到<settings>标签中的内容,如下第6-10行内容: 1 <?xml version=&q ...

  9. 案例源码解读及思路:RabbitMQ在springboot中的配置

    程序员的高级之处不是什么都会,而是对自己不会的进行抽象,然后完成自己的工作.比如对于RabbitMQ,按照字面理解,就将其看成Message Queue,也就是用来容纳对象的集合.很多功能都拆分给一个 ...

随机推荐

  1. 一次SQL注入导致的"越权"

    原文来自SecIN社区-作者:tkswifty 相关背景   在实际的业务开发中,SQL交互往往是业务系统中不可或缺的一项.在Java中提供了类似Mybatis.Hibernate.SpringDat ...

  2. Day 1-决胜IT十八招-前言

    走资讯这一行转眼间八年多了,从大学的时候,我有长达十年的时间思索在从事软体开發这一行到底怎麽存活下来,这思考下来,为自己总算找到一个出口来,这十八招只是其一的绝学,见阵这一行干软体开發的变化也很大,从 ...

  3. Windows生产力工具推荐

    相信大部分同学还是Windows用户,作为一个长期Windows/MacOS双系统长期用户,Windows在用的好,工作效率也很高,下面就推荐几款Windows下面的生产力工具. utools 用过M ...

  4. 【NOIP2015模拟11.2晚】JZOJ8月4日提高组T2 我的天

    [NOIP2015模拟11.2晚]JZOJ8月4日提高组T2 我的天 题目 很久很以前,有一个古老的村庄--xiba村,村子里生活着n+1个村民,但由于历届村长恐怖而且黑暗的魔法统治下,村民们各自过着 ...

  5. 关于Django的序列化问题。serializers

    在DRF框架里,ModelSerializers是一个重要的组件.大大的帮组我们节省了数据序列化的过程,真的可以说是良心产品.接手的这个项目用的Django,前人的代码都是手动序列化的,为了保证风格的 ...

  6. Python中动态编译函数compile(source, filename, mode, ......)参数filename的作用是什么?

    动态编译函数compile调用语法如下: compile(source, filename, mode, flags=0, dont_inherit=False, optimize=-1) 其中的fi ...

  7. Python中容器指的是什么?

    容器:容器是一种把多个元素组织在一起的数据结构,容器中的元素可以逐个地迭代获取,可以用in, not in关键字判断元素是否包含在容器中. 容器是一种可以包含其他类型对象(如列表.元组.字典等)作为元 ...

  8. 第9.2节 Python的文件打开函数open详解

    一. 引言 在操作一个文件前,大部分情况需要先打开文件,才能进行,在Python中使用内置函数open来打开一个文件.open函数是Python的一个内置函数,io模块 定义的函数open是该内置函数 ...

  9. PyQt(Python+Qt)学习随笔:Qt Designer中QAbstractButton派生按钮部件的shortcut 属性

    shortcut 属性保存与按钮关联的快捷键.可以使用shortcut()和setShortcut(QKeySequence)访问和设置该属性. 关于这个属性官网介绍的不多,经老猿实际验证,它与tex ...

  10. WindowsServer系统设置U盘引导及安装

    准备一台服务器,我的服务器上图. 1.开机启动,按DEL进入BIOS.我的显示如下图,按F7进入. 2.找到设置启动项的地方 3.修改U盘启动项 4.保存退出. 5.重启服务器正常的话应该能够从U盘引 ...