前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >spring boot加载复杂的yml文件获取不到值的问题

spring boot加载复杂的yml文件获取不到值的问题

作者头像
用户1215919
发布2018-02-27 10:26:22
2.5K0
发布2018-02-27 10:26:22
举报
文章被收录于专栏:大大的微笑大大的微笑

今天使用spring boot读取yml文件,这种多层嵌套的竟然无法读取到(value注解spring.redis.pool.max.wait),即便加上全名也不行,然后网上搜到的内容也未曾满意,很多文章内容都是一样且重复的.最后放弃了查找,突发奇想之下解决了这个问题. 本文旨在如何读取多层嵌套的yml文件,希望能帮到众位. 以下是代码:

代码语言:javascript
复制
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
	            + "]";
    }


}
代码语言:javascript
复制
#多层配置

spring:
	redis:
		database: 0
		host: localhost
		port: 6379
		timeout: 0
		pool:
		   max:
			  active: 8
			  wait: -1
			  idle: 8
		   min:
			  idle: 0
代码语言:javascript
复制
日志打印如下所示:
============= redisConnect ================
RedisConfiguration [host=localhost, port=6379, timeout=0, database=0, poolMaxWait=-1, poolMaxIdle=0, poolMinIdle=0, poolMaxActive=8]
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档