我在网上看别人介绍手写BootStarter的时候,提到了关于项目依赖自己编写的Starter的时候,有些时候会遗忘某些配置。于是就提到了项目编译后,在target/classes/META-INF文件夹(具体路径可能跟Maven或Gradle构建项目有出入,但是META-INF文件夹是一定存在的),这个文件夹下面可能有spring-configuration-metadata.json文件

我们来简单查看一下这个文件

{
  "groups": [
    {
      "name": "diyPrefix",
      "type": "com.zanglikun.springdataredisdemo.controller.Test",
      "sourceType": "com.zanglikun.springdataredisdemo.controller.Test"
    }
  ],
  "properties": [
    {
      "name": "diyPrefix.age",
      "type": "java.lang.Integer",
      "description": "年龄",
      "sourceType": "com.zanglikun.springdataredisdemo.controller.Test"
    },
    {
      "name": "diyPrefix.open",
      "type": "java.lang.Boolean",
      "sourceType": "com.zanglikun.springdataredisdemo.controller.Test"
    },
    {
      "name": "diyPrefix.title",
      "type": "java.lang.String",
      "description": "标题",
      "sourceType": "com.zanglikun.springdataredisdemo.controller.Test"
    }
  ],
  "hints": []
}

这个文件默认不会自动生成。他是依赖于两步操作

  1. 添加spring-boot-configuration-processor依赖
  2. 一个类使用@ConfigurationProperties
  3. 重新Clean、编译项目

步骤如下:

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

一旦打包,就会如果你使用@ConfigurationProperties 就会有生成(建议先Clean,在Package)

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

/**
 * @Author :zanglk
 * @DateTime :2022/10/28 10:40
 * @Description :测试Application生成被依赖服务配置文件的提示
 * @Notes :To change this template:Click IDEA-Preferences to search 'File Templates'
 */
@Data
@ConfigurationProperties("diyPrefix") // 报错不用管他!因为你配置文件本来就没有,是获取依莱项目的配置文件读取
public class Test {
    /**
     * 标题
     */
    private String title;

    /**
     * 年龄
     */
    private Integer age;

    // 是否开启,注意双撇注释 不会被记录注释信息,无用双撇注释
    private Boolean open;
}

上文的spring-configuration-metadata.json 就是这个类自动生成的!

我们去测试一下项目被依赖的提示。自行在IDEA添加依赖哦。这里不粘代码喽。

完结 🎉