yml读取list对象_spring boot 读取 application.yml 中 List 类型数据

开发环境

spring boot 1.5.9

jdk 8

先说背景

使用 spring boot 开发应用, 有一个读取 application.yml 配置的需求,配置项的类型为列表,需要将配置项内容读取到 Java 类中, 开发过程中遇到无法正确读取配置内容的问题,遂记录.

再说干货

1. application.yml 中配置

spring boot 中默认的 yaml 类库为 snakeyaml, 目前支持 yaml 1.1 规范, 规范参考地址 YAML 1.1 (2nd Edition)

配置内容如下:

my:

config:

referers:

- id: aaa

referer: http://www.baidu.com

- id: bbb

referer: http://wwww.163.com

2. 相关 Java 类

配置读取类, 重点如下:

多层级配置名称, 可以使用 @ConfigurationProperties(prefix = "my.config")

需要 new 一个空的配置项列表 ArrayList (referers)

需要生成该 List 对象的 Getter Setter 方法 (不配置无法读取数据)

@Service

@ConfigurationProperties(prefix = "my.config")

public class ConfigServiceImpl implements ConfigService {

private static Logger logger = LoggerFactory.getLogger(ConfigServiceImpl.class);

/**

* 配置项列表

*/

private List referers = new ArrayList<>();

public List getReferers() {

return referers;

}

public void setReferers(List referers) {

this.referers = referers;

}

// ... 其它业务方法

}

列表中单个元素对象:

public class Referer {

private String id;

private String referer;

// ... 此处省去getter setter

}

结束语

以上为实际开发中相关内容, 遇到点小坑, 解决后随手记录

读取application.yml配置的方式有两种: 1. 通过注入Environment对象的方式:在Spring Boot,可以通过注入org.springframework.core.env.Environment对象来获取application.yml的配置值。在控制器使用@Autowired注解注入Environment对象,并使用getProperty方法获取指定配置项的值。例如: ``` @RestController @RequestMapping("/test") public class TestController { @Autowired private Environment environment; @GetMapping("/testTwo") public String test2(){ String configValue = environment.getProperty("configKey"); return configValue; } } ``` 2. 通过注解的方式获取配置值:另一种方式是使用@Value注解,直接将配置值注入到成员变量。在控制器使用@Value("${configKey}")注解将配置值注入到成员变量,然后可以直接访问该成员变量。例如: ``` @RestController @RequestMapping("/test") public class TestController { @Value("${configKey}") private String configValue; @GetMapping("/testOne") public String test(){ return configValue; } } ``` 这两种方式都可以用来读取application.yml的配置值,选择哪种方式取决于具体的需求和开发者的个人偏好。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [在SpringBoot application.yml获取自定义常量方式](https://download.csdn.net/download/weixin_38643401/12725882)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [springboot 读取application.yml配置信息的三种方式](https://blog.csdn.net/f234344435/article/details/125315271)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值