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 版权协议,转载请附上原文出处链接和本声明。