专栏首页大大的微笑spring boot加载复杂的yml文件获取不到值的问题

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

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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 设计模式之装饰模式

    其中一个配料类代码: public class Fruit extends AbstractDrinkDecorator { public Fruit(Dri...

    用户1215919
  • java发送邮件功能,以发送qq邮件为例

    问题①: java发送qq邮件出现如下错误的解决方法:      503 Error: need EHLO and AUTH first ! pop.put("...

    用户1215919
  • 续谈ActiveMQ之java如何操作ActiveMQ(springBoot项目)

    引入maven依赖 <!-- activemq --> <dependency> <groupId>org.sp...

    用户1215919
  • Linux下Tomcat指定JDK和设置内存大小

    試毅-思伟
  • 吴喜之:数据分析和数据挖掘是最大的求职法宝

    本文是中国人民大学教授吴喜之在“2015中国数据分析师行业峰会(CDA•Summit)”上的演讲全文,演讲的主题是“如何成为一名数据科学家”。

    华章科技
  • 吴喜之:数据分析和数据挖掘是最大的求职法宝

    前语 本文是中国人民大学教授吴喜之在“2015中国数据分析师行业峰会(CDA•Summit)”上的演讲全文,演讲的主题是“如何成为一名数据科学家”。 ? 吴喜之...

    小莹莹
  • 性能基础之常见RPC框架浅析

    在性能基础之浅谈常见接口性能压测一文中我们有简单介绍常见的 RPC 接口,本文将单篇详细介绍 RPC 框架。

    高楼Zee
  • Neutron的IPAM还可以这么玩!

    neutron哪些地方有需要ip?too many,比如说虚拟机的网卡、路由器的外部网关、内部接口、浮动ip、dhcp port、ha路由器的管理口,其他组件l...

    腾讯云TStack
  • 代码审查如何保证软件质量

    在软件行业,您可能经常会听到术语“代码审查”。但是,代码审查的概念经常被误解。人们通常认为它在软件开发生命周期中被忽视执行测试应足以满足验证过程。因此,他们倾向...

    八音弦
  • 使用Git多人协作,完成项目开发

    HTML5学堂-利利:关于Git的知识,我们共分成了四个大步骤进行讲解,之前我们提到了Git的安装与配置、Git在本地的使用方法,如何创建Git本地仓库与服务器...

    HTML5学堂

扫码关注云+社区

领取腾讯云代金券