Spring Boot 配置文件配置自动提示 Configuration Processor

效果

在使用Idea等开发工具时,配置文件中输入前缀就有对应的补全提示,使开发者可以很方便配置相应属性,效果截图如下:

在这里插入图片描述
在这里插入图片描述

元数据说明

这些提示来自于 spring 自动配置规范中的源数据文件 spring-configuration-metadata.jsonadditional-spring-configuration-metadata.json 中内容的定义。有了固定规范后,开发工具则可以从对应的json源数据文件中加载到对应的信息补全提示,使开发过程更加友好便捷。

spring-configuration-metadata.json 由插件 spring-boot-configuration-processor 自动生成,additional-spring-configuration-metadata.json 则为附加配置需要手工维护。因为自动生成会在每次编译后重新覆盖所以才有了这个附加配置文件。自动生成需要结合定义的Java类、使用 @ConfigurationProperties 注解修饰、才可以被插件 spring-boot-configuration-processor 加载并自动生成到 spring-configuration-metadata.json 中。

附:其他几个关于 SpringBoot 自动配置的主要文件
配置文件:spring.factories
配置文件:spring-configuration-metadata.jsonadditional-spring-configuration-metadata.json
配置文件:spring-autoconfigure-metadata.properties
插件:spring-boot-configuration-processor
插件:spring-boot-autoconfigure-processor
DeferredImportSelector选择器:AutoConfigurationImportSelector

开发实现

为了实现上文效果,下面是具体的代码实例:

1、定义一个 Java 配置类

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

/**
 * 测试配置类
 * 
 * @author shanhy
 */
@Data
@Component
@ConfigurationProperties(prefix = "shanhy.test")
public class TestProperties {
    
    /**
     * 唯一ID
     */
    private int id = 100;
    
    /**
     * 名称
     */
    private String name;
    
    /**
     * 标志位
     */
    private boolean flag = true;
    
}

其中属性上面的Java注释最终会自动生成到元数据文件 spring-configuration-metadata.json 中,所以请严格添加注释描述。

2、添加插件依赖

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

这个插件就是自动生成元数据文件内容的,如果你不需要使用插件自动生成元数据,而希望自己定义的属性配置的元数据,则自行维护 resources/META-INF/additional-spring-configuration-metadata.json 即可。

3、编译并验证结果

使用Mavan编译生成元数据文件,然后在 properties 中验证结果。

为了验证自定义附加的元数据,我在文件 resources/META-INF/additional-spring-configuration-metadata.json 中添加了一个自定义配置:

{
  "properties": [
    {
      "name": "shanhy.test.additional-content",
      "type": "java.lang.Boolean",
      "description": "附加内容"
    }
  ]
}

在这里插入图片描述
在这里插入图片描述


(END)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/7022.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

百度储瑞松谈智能驾驶:极个别车厂才能做全栈自研

百度集团副总裁、智能汽车事业部总经理储瑞松在百人会论坛表示&#xff0c;汽车智能化系统不同于车企所熟悉的以金属件为主的车辆其他部分的系统&#xff0c;是一个以硬件为载体、由算法软件驱动的大规模动态系统&#xff0c;它的复杂性比起以金属件为主的系统是指数级增长的。…

【环境与工具】IDE配置——vscode配置

配置vscode的 Python , C 的编译环境 2. Python 2.1 Python解释器 2.1.1 安装python环境 2.1.2 创建vscode-python文件夹 裸配置 如图&#xff0c;与在命令行运行无区别 2.1.2 安装vscode-python插件 2.1.3 code插件运行.py 添加配置文件 program 设置启动文件 "progr…

多线程进阶学习12------ConcurrentHashMap详解

JDK 7 HashMap 并发死链 注意&#xff1a;要在 JDK 7 下运行&#xff0c;否则扩容机制和 hash 的计算方法都变了 import java.io.*; import java.nio.ByteBuffer; import java.util.HashMap; import java.util.StringTokenizer; import java.util.concurrent.*; import java.…

AR”将会成为“更加日常化的移动设备应用的一部分”吗

目录 1&#xff1a;AR是什么 2&#xff1a;AR给人类带来的贡献 3&#xff1a;人们在生活中可以遇到许多 AR 技术应用 4&#xff1a;AR 技术的未来发展的趋势&#xff1a; 大学主攻VR&#xff0c;从大一就对VR的知识&#xff0c;设备&#xff0c;已经所涉及的知识伴随我的整…

AI工具(ChatGPT)常用指令,持续更新...

要国内使用AI工具&#xff0c;关注&#xff1a;码视野&#xff0c;回复&#xff1a;1002使用VensiGPT时&#xff0c;当你给的指令越精准&#xff0c;它回复就会越完美&#xff0c;例如&#xff0c;如果你要请它协助撰写文案&#xff0c;如果没有给与指定情景与目标&#xff0c;…

作为大学生,你还不会搭建chatGPT微应用吗?

目录 引言ChatGPT是什么&#xff1f;背景&#xff1a;ChatGPT敢为人先&#xff0c;打破全球僵局示例演示&#xff1a;基于ChatGPT微应用实现的条件及步骤&#xff08;1&#xff09;整体框架&#xff08;2&#xff09;搭建前的准备工作&#xff08;3&#xff09;实际搭建步骤&a…

文件或目录损坏怎么办?4个实用方法!

案例&#xff1a;文件或目录损坏怎么恢复&#xff1f; 【有谁知道为什么文件会突然无法打开且显示损坏了呀&#xff1f;我有一个很重要的文件无法打开了&#xff0c;之前从来没有遇到过这样的问题&#xff0c;这让我很无措&#xff0c;请大家帮我想想办法吧&#xff01;】 我…

ThreeJS-聚光等衰减(二十一)

聚光灯可以联系到现实中的手电筒 衰减分为&#xff1a;距离衰减和边缘衰减 .decay : Float&#xff08;控制的是灯光自身的亮度&#xff09; The amount the light dims along the distance of the light. Default is 2. In context of physically-correct rendering the defa…

pip lanms-neo报错问题

pip lanms-neo报错问题 安装Polygon3的时候&#xff0c;就遇到需要Microsoft Visual C 14.0的问题&#xff0c;以为通过本地whl安装&#xff0c;就能避免。结果&#xff0c;lanms-neo这个库&#xff0c;网上还不好找whl文件&#xff0c;找到的都是csdn里面的付费下载&#xff…

【Java8最优解】P1478 陶陶摘苹果(升级版)

陶陶摘苹果&#xff08;升级版&#xff09; 题目描述 又是一年秋季时&#xff0c;陶陶家的苹果树结了 nnn 个果子。陶陶又跑去摘苹果&#xff0c;这次他有一个 aaa 公分的椅子。当他手够不着时&#xff0c;他会站到椅子上再试试。 这次与 NOIp2005 普及组第一题不同的是&…

HotSpot笔记——共享库操作

共享库操作前言MakefileHotspot的Makefile如何定义需要共享库使用编译选项使用链接器选项dlopendlsym前言 jvm启动时&#xff0c;libjli.so、libjvm.so、libjava.so这些共享库的加载操作&#xff0c;都是c语言的&#xff0c;我们记录一下这些操作函数。 Makefile 以下是一个…

python学习笔记2

使用链接&#xff1a; Python 3 basics - GeeksforGeeks 对应的英文是&#xff1a; 这里联想一下Redis的数据类型: string list set hash zset 列表 有一个细节&#xff0c;可以看到下面的输出里面也带了中括号&#xff1a; 字典 第一行定义的时候是中括号&#xff0c;因为…

文章八:YOLOv5车牌识别系统的Web应用与API开发

在本篇文章中&#xff0c;我们将探讨如何使用YOLOv5车牌识别系统开发一个Web应用&#xff0c;以及如何创建一个车牌识别API供其他开发者使用。我们将介绍Flask框架的基本概念&#xff0c;并实现一个简单的车牌识别Web应用和API。 车牌识别视频Flask框架介绍 Flask是一个轻量级的…

vue-cropper 拖动图片和截图框

现象 开发遇到vue--cropper不能拖动图片和截图框 解决方法 can-move-box设置为true&#xff0c;表示可以拖动截图框 can-move设置为true&#xff0c;表示可以拖动图片 *注意&#xff1a; 我外层套了一个el-col, el-col的宽高一定要大于截图框的宽高&#xff0c;否则移动不了…

网络安全工程师做什么?

​ 网络安全很复杂。数字化转型、远程工作和不断变化的威胁形势需要不同的工具和不同的技能组合。 系统必须到位以保护端点、身份和无边界网络边界。负责处理这种复杂安全基础设施的工作角色是网络安全工程师。 简而言之&#xff0c;网络安全工程师是负责设计和实施组织安全系…

ELK、ELFK企业级日志分析系统

目录 一、ELK简介 1、什么是ELK 2、ELK工作原理及过程​编辑 3、ELK相关名词介绍 ①Elasticsearch介绍 ②Logstash介绍 ③Kibana介绍 ④Fluentd介绍 ⑤Filebeat介绍 二、ELK部署 1、实验环境 2、安装elasticsearch 3、安装logstash ​编辑4、安装kiabana ​编辑…

网站是怎么屏蔽脏话的呢:简单学会SpringBoot项目敏感词、违规词过滤方案

一个社区最重要的就是交流氛围与审查违规&#xff0c;而这两者都少不了对于敏感词进行过滤的自动维护措施。基于这样的措施&#xff0c;我们才能基本保证用户在使用社区的过程中&#xff0c;不至于被敏感违规词汇包围&#xff0c;才能够正常的进行发布帖子和评论&#xff0c;享…

unity3d:asset store上C#代码热重载插件,不需要重运行,重新加载更新后函数

C#热重载插件地址 https://assetstore.unity.com/packages/tools/utilities/hot-reload-edit-code-without-compiling-250972?clickref1011lwHg8abv&utm_sourcepartnerize&utm_mediumaffiliate&utm_campaignunity_affiliate#description 打开热重装有两种方法 …

地库位置复杂如何导航,反向寻车系统解决方案

地库位置复杂如何导航&#xff1f;问路这一行为在迷路时确实比较高效&#xff0c;但是得到的信息往往还是过于碎片和混乱&#xff0c;尤其是在停车场内&#xff0c;通过问路去往目的地既费时又费力。而有了停车场地图&#xff0c;这个问题就迎刃而解了。停车场地图可以帮助驾车…

金山云最新财报的两个历史新高:毛利创新高,亏损创新高

‍数据智能产业创新服务媒体——聚焦数智 改变商业2023年3月29日&#xff0c;中国领先的独立云服务提供商金山云&#xff08;美股代码&#xff1a;KC&#xff09;发布了截至2022年12月31日的四季度财报与年度业绩数据。金山云首席执行官邹涛先生表示&#xff1a;“我们以喜人的…
最新文章