1. 开发中有个东西很好
在开发Spring应用的时候, 经常会给应用添加各种配置属性,  
有些第三方包的配置属性很贴心, 配合Idea, 鼠标悬浮在上面就会提示你这个属性是干什么的
例如:
- 在properties文件中编辑的时候, 鼠标悬浮在属性上的弹框
 

- 自动补全弹框中, 括号里的注释
 

2. IDEA是从哪读取到这个注释的呢?
Idea会自动读取 META-INF/spring-configuration-metadata.json这个文件, 获取其中的信息
大家有缘可以看看spring-boot-actuator-autoconfigure 这个jar包中的 \META-INF\spring-configuration-metadata.json
其中就有很多的注释
3. 我项目中的属性也想有注释自动提示
好了, 现在知道了IDE会自动读取 META-INF/spring-configuration-metadata.json 
我也想搞一个, 那我是不是也要手写一个这个文件呢? 写起来还挺麻烦的
其实不需要, spring已经给我们提供了一个工具
spring-boot-configuration-processor.jar
我们的项目直接依赖它, 编译之后(包括打jar包) 就会自动生成 META-INF/spring-configuration-metadata.json
3.1 添加Maven依赖
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-configuration-processor</artifactId><optional>true</optional></dependency>
- 添加maven插件
<project><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><configuration><excludes><!-- 添加了这个排除项, 编译后的jar包中就不会有spring-boot-configuration-processor的依赖了 --><!-- 只会剩下 META-INF/spring-configuration-metadata.json 文件 --><!-- spring-boot-configuration-processor 生成好文件之后历史任务就完成了, 自己被排除掉, 不会影响 引用本项目 的 其他项目 --><exclude><groupId>org.springframework.boot</groupId><artifactId>spring-boot-configuration-processor</artifactId></exclude></excludes></configuration></plugin></plugins></build></project>
3.2 给你的配置项添加javadoc
 
例如:
@Data@ConfigurationProperties("acme")public class AcmeProperties {/*** 是否检查位置信息*/private boolean checkLocation = true;/*** 登录超时时间*/private Duration loginTimeout = Duration.ofSeconds(3);}
/*** 用这种标记包裹起来的注释, 就是javadoc* spring-boot-configuration-processor 只对javadoc起作用*/
3.3 编译
当我们添加好注释之后, 正常进行编译后就会自动生成 META-INF/spring-autoconfigure-metadata.properties文件
4. 用起来效果
我直接使用maven对项目编译
mvn clean install
编译之后就有了
META-INF/spring-autoconfigure-metadata.properties文件了, 是不是很方便呢

- 再看看打的jar包中是否还依赖着 
spring-boot-configuration-processor 


OK啦家人们!   spring-boot-configuration-processor 是我们的无名英雄!
