springboot加載復(fù)雜的yml文件獲取不到值的解決方案
springboot加載yml文件獲不到值
今天使用spring boot讀取yml文件,這種多層嵌套的竟然無(wú)法讀取到(value注解spring.redis.pool.max.wait),即便加上全名也不行,然后網(wǎng)上搜到的內(nèi)容也未曾滿意,很多文章內(nèi)容都是一樣且重復(fù)的.最后放棄了查找,突發(fā)奇想之下解決了這個(gè)問(wèn)題.
本文旨在如何讀取多層嵌套的yml文件,希望能幫到眾位.
以下是代碼:
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]
獲取不到y(tǒng)ml配置文件指定的值
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication?
public class App {
? ? ?public static void main(String[] args) {
? ? ? ? SpringApplication app = new SpringApplication(App.class);
? ? ? ? ConfigurableApplicationContext context = app.run(args);
? ? ? ? System.out.println(context.getEnvironment().getProperty("jdbc.pwd")); ?
? ? ? ? context.close();
? ?}
}apllication.yml 放置在classpath路徑下
jdbc: ?pwd: 123456 ?#冒號(hào)和數(shù)字之間有一個(gè)空格,沒(méi)有否則獲取失敗,pwd前面有縮進(jìn)兩個(gè)字符
ps:版本spring-4.3.2-release,springboot-1.4
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
使用spring框架實(shí)現(xiàn)數(shù)據(jù)庫(kù)事務(wù)處理方式
這篇文章主要介紹了使用spring框架實(shí)現(xiàn)數(shù)據(jù)庫(kù)事務(wù)處理方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-10-10
Java continue break制作簡(jiǎn)單聊天室程序
這篇文章主要為大家詳細(xì)介紹了Java continue break制作簡(jiǎn)單聊天室程序,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-10-10
Spring Boot 啟動(dòng)注解過(guò)程分析
這篇文章主要為大家介紹了Spring Boot 啟動(dòng)注解過(guò)程示例分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-06-06
java使double保留兩位小數(shù)的多方法 java保留兩位小數(shù)
這篇文章主要介紹了java使double類型保留兩位小數(shù)的方法,大家參考使用吧2014-01-01
SpringBoot整合Redisson的步驟(單機(jī)版)
Redisson非常適用于分布式鎖,而我們的一項(xiàng)業(yè)務(wù)需要考慮分布式鎖這個(gè)應(yīng)用場(chǎng)景,于是我整合它做一個(gè)初步簡(jiǎn)單的例子(和整合redis一樣)。2021-05-05

