SpringBoot中使用@ConfigurationProperties加载多层嵌套配置

  • Post author:
  • Post category:其他




SpringBoot中使用@ConfigurationProperties加载多层嵌套配置

日常项目开发中,经常遇到使用多级配置的情况,springboot中可以使用

@ConfigurationProperties

来加载。

网上看到有朋友的配置中,把内部类对象直接new出来,这种方法可能也可以成功,本人没试,毕竟使用

spring

的,再用

new

的话,总感觉差点意思啊,所以就自己试着配置了一下。

废话不多说,上正文。



先看效果:



配置文件内容:

在这里插入图片描述



程序输出日志:

在这里插入图片描述

从日志可以看出,配置文件中的多级参数,都被成功加载。



再看代码:

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;

import lombok.Data;

@Data
@Configuration
@ConfigurationProperties("yl-conf")
public class YlConf{

	private String port;

	@Autowired
	private YlUrl ylUrl;
	
	@Data
	@Configuration
	@ConfigurationProperties("yl-conf.yl-url")
	public class YlUrl{
		private String loginUrl;
		private String sendUrl;
	}
}



说明


@ConfigurationProperties

加载的配置前缀字符,中间如果有大写字母,需转为小写,并在前面加上中划线-。如我的配置中,类名

YlConf

,对应的配置为

yl-conf

,类名

YlUrl

,对应的配置为

yl-url



另外,前缀并不是必须和类名相同,如图:

在这里插入图片描述

注意子级的前缀配置,需带上它的父级名称,如我的配置:

@ConfigurationProperties("yl-conf.yl-url")

如此,OK。



最后

如果子级过多,全使用内部类就不太妥当,可以将内部类放到外面,其他配置不变。



版权声明:本文为blongz原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。