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。

最后

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

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐