我在网上看别人介绍手写BootStarter的时候,提到了关于项目依赖自己编写的Starter的时候,有些时候会遗忘某些配置。于是就提到了项目编译后,在target/classes/META-INF文件夹(具体路径可能跟Maven或Gradle构建项目有出入,但是META-INF文件夹是一定存在的),这个文件夹下面可能有spring-configuration-metadata.json文件
我们来简单查看一下这个文件
代码语言:javascript复制{
"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": []
}
这个文件默认不会自动生成。他是依赖于两步操作
- 添加spring-boot-configuration-processor依赖
- 一个类使用@ConfigurationProperties
- 重新Clean、编译项目
步骤如下:
代码语言:javascript复制 <dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
一旦打包,就会如果你使用@ConfigurationProperties 就会有生成(建议先Clean,在Package)
代码语言:javascript复制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添加依赖哦。这里不粘代码喽。
完结