• spring boot 自定义配置文件并提示及NestedConfigurationProperty注解作用


    这里是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;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

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

    自定义配置没有提示

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

    在这里插入图片描述

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

    1. 添加依赖

    		<dependency>
    			<groupId>org.springframework.bootgroupId>
    			<artifactId>spring-boot-configuration-processorartifactId>
    			<optional>trueoptional>
    		dependency>
    
    • 1
    • 2
    • 3
    • 4
    • 5

    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
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    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;
    	}
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
  • 相关阅读:
    【第41篇】ConvMAE:Masked Convolution 遇到 Masked Autoencoders
    继欧洲后再度进军日韩,Pico消费级VR全球化加速
    Spring Boot 实现通用 Auth 认证的 4 种方式
    硕士论文章节划分
    智能照明控制系统某大楼大厅照明的应用
    leetcode11-盛最多水的容器
    服务器怎么启动vue3 构建的dist 服务
    python urllib.request模块下载数据
    数苹果-第12届蓝桥杯Scratch选拔赛真题精选
    0基础就可以上手的Spark脚本开发-for Java
  • 原文地址:https://blog.csdn.net/qq_42651904/article/details/127854028