这里是weihubeats,觉得文章不错可以关注公众号小奏技术,文章首发。拒绝营销号,拒绝标题党

源码

本博文中所有使用的源码均已上传github

  • 地址: https://github.com/weihubeats/weihubeats_demos/tree/master/spring-boot-demos/spring-boot-configurationProperties

背景

在有一些场景我们需要定义一些spring boot中的配置文件,比如如下:

@ConfigurationProperties("spring.xiaozou.test")
@ToString
@Data
public class TestProperties {
	
	private String name;

	@NestedConfigurationProperty
	private Student student;
}

然后我们可以在配置文件中去读取到配置文件并自动填充到这个Bean中,这里面就有一些细节需要我们注意

自定义配置没有提示

我们在使用spring 提供的一些jar在application.yml中写配置都会有如下提示

在这里插入图片描述

但是如果自定义配置是没有提示要,要实现该功能很简单

1. 添加依赖

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-configuration-processor</artifactId>
			<optional>true</optional>
		</dependency>

2. 编译项目

我们添加玩依赖就可以重新编译项目了,然后我们查看target目录会发现多了如下文件
在这里插入图片描述

这就是spring自动给我们生成的配置文件提示文件,我们也可以不添加上面的依赖,自己编写该文件,也是可以的

3. 测试

在这里插入图片描述
可以看到有提示了

NestedConfigurationProperty注解

如果细心的同学会发现我们在配置的类Student上面添加了注解@NestedConfigurationProperty
其实这个注释很简单,如果我们依赖的配置类中又有新的配置类,但是不属于该配置类的内部内,就需要添加@NestedConfigurationProperty注解,该配置类才能生效。
简单用例子解释就是,要使配置类中的非基础类型的类生效需要使用如下方式

  1. 添加@NestedConfigurationProperty 注解
@ConfigurationProperties("spring.xiaozou.test")
@ToString
@Data
public class TestProperties {
	
	private String name;

	@NestedConfigurationProperty
	private Student student;
}
  1. 使用内部内
@ConfigurationProperties("spring.xiaozou.test")
@ToString
@Data
public class TestProperties {
	
	private String name;

	private Student student;
	
	@Data
	private static class Student {
		private int id;
		private String username;
		private boolean gender;
	}
}

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐