前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >无聊小知识.02 Springboot starter配置自动提示

无聊小知识.02 Springboot starter配置自动提示

作者头像
有一只柴犬
发布2024-01-25 10:56:30
1240
发布2024-01-25 10:56:30
举报
文章被收录于专栏:JAVA体系JAVA体系

1、前言

Springboot项目配置properties或yaml文件时候,会有很多spring相关的配置提示。这个是如何实现的?如果我们自己的配置属性,能否也自动提示?

2、Springboot配置自动提示

其实IDE是通过读取配置信息的元数据而实现自动提示的。Springboot的元数据就在目录META-INF下。通过starter部分结构,我们可以看到如下:

其实,springboot自动提示元数据就在META-INF中的spring-configuration-metadata.json或additional-spring-configuration-metadata.json。

打开additional-spring-configuration-metadata.json可以看到json结构:

代码语言:javascript
复制
{
  "groups": [],
  "properties": [
    {
      "name": "spring.devtools.add-properties",
      "type": "java.lang.Boolean",
      "description": "Whether to enable development property defaults.",
      "defaultValue": true
    }
  ],
  "hints": []
}

properties:为设置的提示属性,name为属性名称,type为属性类型,defaultValue为该属性默认值,description为属性描述。

groups:为properties提供了一个有上下文关联的分组。本身并不指定一个值。

hints:为属性设置多个提示值。

具体配置描述详见官网地址:https://docs.spring.io/spring-boot/docs/current/reference/html/configuration-metadata.html

3、手写尝试

1、创建starter工程

创建starter模块工程MySpringbootDemoModule1

2、自动装配

创建属性映射类,DemoProperties:

代码语言:javascript
复制
package org.example;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.context.properties.EnableConfigurationProperties;

@EnableConfigurationProperties({DemoProperties.class})
@ConfigurationProperties(prefix = "org.shamee")
public class DemoProperties {

    private String name;
    private Integer age;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }
}

创建MyAutoConfiguration:

代码语言:javascript
复制
package org.example;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;


@Configuration
public class MyAutoConfiguration {

    @Bean
    public DemoProperties demoProperties(){
        return new DemoProperties();
    }

}

配置spring.factories:

代码语言:javascript
复制
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
org.example.MyAutoConfiguration

到此,一个简单的starter模块就已创建完毕,但是此时,如果直接使用,IDE是无法自动提示的。这里我们期望IDE帮我们自动提示DemoProperties中的两个属性,org.shamee.name和org.shamee.age。

3、创建元数据

那么,我们在resources下创建META-INF/additional-spring-configuration-metadata.json,并给与配置信息。

代码语言:javascript
复制
{
  "properties": [
    {
      "name": "org.shamee.name",
      "type": "java.lang.String",
      "defaultValue": "test"
    },
    {
      "name": "org.shamee.age",
      "type": "java.lang.Integer",
      "defaultValue": 12
    }
  ]
}

4、安装使用

到此,就已经完成了一个能够让IDE自动帮我们提示的starter依赖。执行mvn install安装。

5、使用

创建一个主工程:MySpringbootDemo

pom.xml添加上述starter依赖。

刷新以来后,尝试application.properties上配置我们自定义的属性。

可以看到,IDE已经自动帮我们提示了属性名称以及默认的值。嗯,爽了。

看下starter依赖结构:

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-03-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1、前言
  • 2、Springboot配置自动提示
  • 3、手写尝试
    • 1、创建starter工程
      • 2、自动装配
        • 3、创建元数据
          • 4、安装使用
            • 5、使用
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档