java - Spring Boot 启动器注解元数据

标签 java maven spring-boot

Spring Boot文档中“编写我们自己的spring boot starter”一章是这样写的:

Make sure to trigger meta-data generation so that IDE assistance is available for your keys as well.

好的,我可以通过这样的方式生成它:

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

但为什么呢?这些元数据的目的是什么,我在哪里可以找到它们,更重要的是它们与我的 IDE 有什么关系(我正在使用 spring 工具套件)? 我只是想在应用程序属性中使用我自己的属性,如 kulatamicuda.superitem。

有人能给我解释一下吗?我有点困惑。谢谢。

最佳答案

我认为目的与为您的界面编写 javadoc 相同。

因此,如果您创建此 starter 的目的是让其他人使用它,那么应该有一些文档。

当您创建一个库时,您可能明白您应该至少记录其他开发人员可以在其应用程序中使用的接口(interface)。

此处类似,您的 ide(至少是 IDEA)将尝试在您的 artefact 中查找 META-INF/spring-configuration-metadata.json 文件,并将提供自动完成和描述(您将在此文件中指定)用于此属性。

举个例子: https://docs.spring.io/spring-boot/docs/current/reference/html/configuration-metadata.html

但是如果你不想描述这些属性,那么你可以保持原样,而不用创建任何带有元信息的文件,这不会影响你的应用程序。

这是它在 IDEA 中的工作方式:

enter image description here

您可以看到为该项目添加的 springboot starters 中定义的每个属性都有自动完成和描述。它还知道属性的类型及其默认值。

关于java - Spring Boot 启动器注解元数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50079730/

相关文章:

Java - Mysql异常不是unicode

maven - 修复 "Plugin execution not covered"build.plugins.plugin.version 后出现 "' 错误 tycho-packaging-plugin 警告 ' is missing"

java - Protocol Buffers 可执行系统间 Linux 错误

使用graphql在spring boot中进行身份验证

java - 我应该如何使用 Spring Data MongoDB 计算由另一个字段分组的字段总和

java - 将类型化集合从 Scala 2.13 方法返回到 Java 8 调用者

java - 警告 : The option setting is experimental and unsupported

java - tiles-defs.xml dtds版本

java - 为什么 Java Spring v.2.2.7 不支持请求方法 'POST'?

azure - 在 Spring boot JPA 中使用多个数据源(使用 CosmosDB)