当前位置: 首页 > news >正文

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 - 博客园

相关文章:

  • python 视频网站爬虫教程,爬虫入门教程(付安装包)
  • Java语言基础 标识符、变量
  • 泛微Ecode新增Button调用服务器中的JSP页面里的方法
  • RabbitMQ系列(五)基本概念之Queue
  • MySQL 中如何解决深度分页的问题? MySQL中 join、inner join、left join、right join区别
  • 解决 ERROR 1130 (HY000): Host is not allowed to connect to this MySQL server
  • springboot、deepseek4j、bge-m3和milvus
  • 关于“你对 Spring Cloud 的理解”详细讲解?
  • bean的管理-03.第三方bean
  • 第8章:流式海啸:数据重构
  • Yolo各个系列的模型、ResNet、Pyrimid network、VGG、PointNet、mobilenet模型
  • ES6模块化详解:导入与导出方式
  • 常用 ADB 命令汇总
  • Starrocks入门(二)
  • 新一代书生·浦语大模型(InternLM3)沐曦训推实践
  • 大型语言模型技术对比:阿里Qwen qwq、DeepSeek R1、OpenAI o3与Grok 3
  • 网站漏洞安全测试 具体渗透思路分析
  • ollama和open-webui部署ds
  • conda常用命令
  • git - study
  • 广州网站制作怎样/张家港seo建站
  • 公安部/宁波seo营销平台
  • 做网站团队的人员安排/企业网站开发制作
  • 版权下如何做免费电影网站/宁波seo博客
  • 动态网站的表单设计/河南最近的热搜事件
  • 上海手机网站制作/营销培训视频课程免费