additional-spring-configuration-metadata.json实现springboot自定义提示

       在配置additional-spring-configuration-metadata.json文件后,在开发人员的IDE工具使用个人编写的配置读取很有效的在application.propertiesapplication.yml文件下完成提示。

      配置元数据文件位于jar下面。 META-INF/spring-configuration-metadata.json它们使用简单的JSON格式,其中的项目分类在“groups”或“properties”下,其他值提示分类在“hints”下。

"groups": [
	{
		"name": "server",
		"type": "org.springframework.boot.autoconfigure.web.ServerProperties",
		"sourceType": "org.springframework.boot.autoconfigure.web.ServerProperties"
	}
	...
],"properties": [
	{
		"name": "server.port",
		"type": "java.lang.Integer",
		"sourceType": "org.springframework.boot.autoconfigure.web.ServerProperties"
	}
	...
],"hints": [
	{
		"name": "spring.jpa.hibernate.ddl-auto",
		"values": [
			{
				"value": "none",
				"description": "Disable DDL handling."
			},
			{
				"value": "validate",
				"description": "Validate the schema, make no changes to the database."
			}
		]
	}
]}

properties表格进行配置上的含义:

名称类型目的
nameString属性的全名。名称采用小写的周期分隔形式(例如server.address)。此属性是强制性的。
type    
 
String 属性的数据类型的完整签名(例如java.lang.String),但也是完整的泛型类型(例如java.util.Map )。您可以使用此属性来指导用户可以输入的值的类型。为了保持一致性,通过使用其包装对应项(例如,boolean变为java.lang.Boolean)来指定基元的类型。请注意,此类可能是一个复杂类型,它从Stringas绑定的值转换而来。如果类型未知,则可以省略。
descriptionString可以向用户显示的组的简短描述。如果没有可用的描述,则可以省略。建议描述为简短段落,第一行提供简明摘要。描述中的最后一行应以句点(.)结尾。
sourceTypeString贡献此属性的源的类名称。例如,如果属性来自带注释的类@ConfigurationProperties,则此属性将包含该类的完全限定名称。如果源类型未知,则可以省略。
defaultValueObject默认值,如果未指定属性,则使用该值。如果属性的类型是数组,则它可以是值数组。如果默认值未知,则可以省略。

groups组比properties多了一个属性 sourceMethod

sourceMethodString获取对象的方法的全名(包括括号和参数类型)(例如,@ConfigurationProperties注释的@Bean方法的名称)。如果源方法未知,则可以省略。

 案例:自定义实现mongodb信息的加载

定义配置类,使用@Component和@ConfigurationProperties注解

@Component
@Getter
@Setter
@ToString
@ConfigurationProperties(prefix = "zhong.data.mongodb")
public class MongoDbProperties {
    //数据库名称
    private String database;
    //用户名
    private String username;

    //密码
    private String password;

    //地址 host:port
    private String address;

    //设置你的认证数据库,如果有的话
    private String authenticationDatabase;

    private MongoDbFactoryProperties mongoDbFactoryProperties;

    @Bean
    public MongoDbFactoryProperties getMongoDbFactory(@Autowired MongoDbFactoryProperties mongoDbFactoryProperties){
        return this.mongoDbFactoryProperties = mongoDbFactoryProperties;
    }
}

additional-spring-configuration-metadata.json的内容如下:

{
  "groups": [
    {
      "name": "zhong.data.mongodb.database",
      "type": "java.lang.String",
      "description": "mongodb的数据库名称",
      "sourceType": "com.zhong.springdemo.mangodbdome.configure.MongoDbProperties"
    },
    {
      "name": "zhong.data.mongodb.mongoDbFactoryProperties",
      "type": "com.zhong.springdemo.mangodbdome.configure.MongoDbFactoryProperties",
      "description": "线程池配置信息",
      "sourceType": "com.zhong.springdemo.mangodbdome.configure.MongoDbProperties",
      "sourceMethod": "getMongoDbFactory()"
    }
  ],
  "properties": [
    {
      "name": "zhong.data.mongodb.username",
      "type": "java.lang.String",
      "description": "mongodb的用户名",
      "sourceType": "com.zhong.springdemo.mangodbdome.configure.MongoDbProperties",
      "defaultValue": ""
    },
    {
      "name": "zhong.data.mongodb.password",
      "type": "java.lang.String",
      "description": "mongodb的密码",
      "sourceType": "com.zhong.springdemo.mangodbdome.configure.MongoDbProperties",
      "defaultValue": "123456"
    },
    {
      "name": "zhong.data.mongodb.address",
      "type": "java.lang.String",
      "description": "mongodb的用户名地址",
      "sourceType": "com.zhong.springdemo.mangodbdome.configure.MongoDbProperties",
      "defaultValue": "127.0.0.1:27017"
    }
  ],
  "hints": []
}

这样我们在application.proerties或application.yaml时使用了。

       需要注意的是,如果需要将我们自定义的设置加载容器中,则需要保证在程序启动时能扫描到指定的jar包路径。

方法是:在@SpringBootApplication注解中配置scanBasePackages

@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class, MongoAutoConfiguration.class,
        MongoDataAutoConfiguration.class}, scanBasePackages = {"com.zhong.springdemo.mangodbdome"})
@EnableSwagger2Doc
public class WebDemoApplication {

    public static void main(String[] args){
        SpringApplication.run(WebDemoApplication.class, args);
    }
}

参考:

Appendix B. Configuration Metadata

springboot之additional-spring-configuration-metadata.json自定义提示 - Purgeyao - 博客园

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

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

相关文章

使用vscode导出Markdown的PDF无法显示数学公式的问题

我的硬件环境是M2的MacBook air,在vscode中使用了Markdown PDF来导出md文件对应的PDF。但不管导出html还是PDF文件,数学公式都是显示的源代码。 我看了许多教程,给的是这个方法:在md文件对应的html文件中加上以下代码&#xff1a…

SpringBoot3—快速入门

一、简介 (1)前置知识 Java17Spring、SpringMVC、MyBatisMaven、IDEA (2)环境要求 (3)SpringBoot3是什么 核心概念:Spring Boot 底层是 Spring,能简单、快速地创建一个独立的、生…

DeepSeek 15天指导手册——从入门到精通 PDF(附下载)

DeepSeek使用教程系列--DeepSeek 15天指导手册——从入门到精通pdf下载: https://pan.baidu.com/s/1PrIo0Xo0h5s6Plcc_smS8w?pwd1234 提取码: 1234 或 https://pan.quark.cn/s/2e8de75027d3 《DeepSeek 15天指导手册——从入门到精通》以系统化学习路径为核心&…

AWS S3 如何设置公开访问权限?

1.让整个bucket都有公开访问权限 1.1关闭【阻止公共读】 1.2关闭ACL访问控制 1.3打开桶策略 这样桶内所有的图片就能访问了 2.只开放特定文件让其具有访问权限? 2.1关闭【阻止公共读】 如之前的图示 2.2打开ACL控制 2.3单个文件打开公共读

深入了解 Python 中的 MRO(方法解析顺序)

文章目录 深入了解 Python 中的 MRO(方法解析顺序)什么是 MRO?如何计算 MRO?C3 算法的合并规则C3 算法的合并步骤示例:合并过程解析 MRO 解析失败的场景使用 mro() 方法查看 MRO示例 1:基本用法 菱形继承与…

二、IDE集成DeepSeek保姆级教学(使用篇)

各位看官老爷好,如果还没有安装DeepSeek请查阅前一篇 一、IDE集成DeepSeek保姆级教学(安装篇) 一、DeepSeek在CodeGPT中使用教学 1.1、Edit Code 编辑代码 选中代码片段 —> 右键 —> CodeGPT —> Edit Code, 输入自然语言可编辑代码,点击S…

一劳永逸解决vsocde模块import引用问题

这里写目录标题 原因解决方案 原因解决方案 原因: VSCode中需要显式地声明PYTHONPATH,不然根本找不到本项目内的模块和包的路径。 解决方法,加入到setting。json里当前Project路径,以后运行就自动添加了: 打开设置 …

网页制作10-html,css,javascript初认识の适用XHTML

一、简介: Xhtml是extensible hypertext markup language的缩写。它是由国际W3C组织制定并公布发行的。是一个过渡技术,结合了部分xml的强大功能及大多数html的简单特性。 Advantage. Xhtml提倡更简洁规范的代码。 Xhtml.文档在旧的基于的浏览器中&…

[原创]openwebui解决searxng通过接口请求不成功问题

openwebui 对接 searxng 时 无法查询到联网信息,使用bing搜索,每次返回json是正常的 神秘代码: http://172.30.254.200:8080/search?q北京市天气&formatjson&languagezh&time_range&safesearch0&languagezh&locale…

Joycon-Robotics库的安装报错解决记录

Joycon-Robotics: Nintendo Switch Joy-Con for Robotics 今天遇到一个小bug,就算在安装joycon-robotic库的时候: cd joycon-robotic pip install -e . 上面这2行指令无误,但是: make install 这个指令报错,error如下…

结构型模式--组合模式

概念 组合人模式是结构型设计模式的一种,主要是用于解决代码中出现类像树一样进行组合而出现的组合结构的相关操作问题。使其树中的任意一个节点(无论是子节点还是父节点)都可以使用同一套接口进行操作。 使用场景 1、如果希望我们对象组合…

《Effective Objective-C》阅读笔记(下)

目录 内存管理 理解引用计数 引用计数工作原理 自动释放池 保留环 以ARC简化引用计数 使用ARC时必须遵循的方法命名规则 变量的内存管理语义 ARC如何清理实例变量 在dealloc方法中只释放引用并解除监听 编写“异常安全代码”时留意内存管理问题 以弱引用避免保留环 …

Idea编译项目很久之后,提示 Error:java:OutOfMemoryError:insufficient memory

项目挺老的的了,平常项目启动,也要挺久的,但是最起码能启动成功,今天下午的时候,项目启动了十几分,一直在转圈,后面控制台输出了这一行异常 Error:java:OutOfMemoryError:insufficient memory …

MySQL 数据增删改查

一、插入数据 1.1 insert插入数据 (1)insert语法格式 INSERT [INTO] 表名 [字段名] VALUES (值列表);(2)示例 ① 向学生表中插入一行数据 ② 向学生表中插入多行数据 二、更新数据 2.1 update更新数据 (1&…

基于flask+vue框架的的医院预约挂号系统i1616(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。

系统程序文件列表 项目功能:用户,医生,科室信息,就诊信息,医院概况,挂号信息,诊断信息,取消挂号 开题报告内容 基于FlaskVue框架的医院预约挂号系统开题报告 一、研究背景与意义 随着医疗技术的不断进步和人们健康意识的日益增强,医院就诊量逐年增加。传统的现场…

专业的UML开发工具StarUML

专业的UML开发工具StarUML 可靠的软件建模软件StarUML StarUML 是一款支持统一建模语言 (UML)框架的开源建模软件。它提供了几种类型的图表,并允许用户生成多种语言的代码。在它的帮助下,软件开发人员可以创建设计、概念和编码解决方案。但是&#xff0…

转化率(漏斗分析)——mysql计算过程

转化率(漏斗分析)——mysql计算过程 问题:有一张表,记录了不同用户的用户id,浏览页面时间,加入购物车时间,下单时间,支付时间,算出每天的各个环节的转化率 创建表info(含用户id,浏…

【Oracle专栏】sqlplus显示设置+脚本常用显示命令

Oracle相关文档,希望互相学习,共同进步 风123456789~-CSDN博客 1.内容概述 本文主要针对oracle 运维中常用知识点进行整理,包括: 1)sqlplus模式下,为了方便查询设置相应的行宽、列宽、行数。…

基于SpringBoot的“同城宠物照看系统”的设计与实现(源码+数据库+文档+PPT)

基于SpringBoot的“同城宠物照看系统”的设计与实现(源码数据库文档PPT) 开发语言:Java 数据库:MySQL 技术:SpringBoot 工具:IDEA/Ecilpse、Navicat、Maven 系统展示 系统总体结构图 局部E-R图 系统首页界面 系统…

为什么要将PDF转换为CSV?CSV是Excel吗?

在企业和数据管理的日常工作中,PDF文件和CSV文件承担着各自的任务。PDF通常用于传输和展示静态的文档,而CSV因其简洁、易操作的特性,广泛应用于数据存储和交换。如果需要从PDF中提取、分析或处理数据,转换为CSV格式可能是一个高效…