今天使用spring boot讀取yml文件,這種多層嵌套的居然沒法讀取到(value註解spring.redis.pool.max.wait),即使加上全名也不行,而後網上搜到的內容也不曾滿意,不少文章內容都是同樣且重複的.最後放棄了查找,突發奇想之下解決了這個問題.java
本文旨在如何讀取多層嵌套的yml文件,但願能幫到衆位.redis
如下是代碼:spring
package com.boot.config; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.context.ApplicationEvent; import org.springframework.context.ApplicationListener; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.PropertySource; @Configuration @ConfigurationProperties(prefix = "spring.redis;pool.max;pool.min") @PropertySource(value = "classpath:redis.yml") public class RedisConfiguration implements ApplicationListener<ApplicationEvent> { @Value("${host}") private String host; @Value("${port}") private Long port; @Value("${timeout}") private Long timeout; @Value("${database}") private Long database; @Value("${wait}") private Long poolMaxWait; @Value("${idle}") private Long poolMaxIdle; @Value("${idle}") private Long poolMinIdle; @Value("${active}") private Long poolMaxActive; public void onApplicationEvent(ApplicationEvent event) { // 打印屬性 System.out.println("============= redisConnect ================"); System.out.println(this.toString()); } @Override public String toString() { return "RedisConfiguration [host=" + host + ", port=" + port + ", timeout=" + timeout + ", database=" + database + ", poolMaxWait=" + poolMaxWait + ", poolMaxIdle=" + poolMaxIdle + ", poolMinIdle=" + poolMinIdle + ", poolMaxActive=" + poolMaxActive + "]"; } }
#多層配置 spring: redis: database: 0 host: localhost port: 6379 timeout: 0 pool: max: active: 8 wait: -1 idle: 8 min: idle: 0
日誌打印以下所示: ============= redisConnect ================ RedisConfiguration [host=localhost, port=6379, timeout=0, database=0, poolMaxWait=-1, poolMaxIdle=0, poolMinIdle=0, poolMaxActive=8]