Kotlin使用SpringBoot的ConfigurationProperties注解,配置文件没有提示解决方案。

问题 Kotlin使用@ConfigurationProperties注解,编辑 application.yaml 文件没有相应提示。
配置类

@ConstructorBinding @ConfigurationProperties(prefix = "application") data class AppConfig( val storage: AppConfigStorage, )data class AppConfigStorage( val namespace: String, )

启动类
@ConfigurationPropertiesScan @SpringBootApplication class EasyQuestionnaireApplicationfun main(args: Array) { runApplication(*args) }

pom.xml
org.springframework.boot spring-boot-configuration-processor true

测试用例
@SpringBootTest internal class AppConfigTest {@Autowired private lateinit var appConfig: AppConfig@Test fun test() { println("""namespace:${appConfig.storage.namespace}""") } }

可以正常运行,但是 application.yaml 文件没有提示。
尝试打开IDEA的设置,勾选 Annotation Processors -> Enable annotation Pprocessors ,也没有产生作用
原因 通过查看target目录下生成的文件,发现 spring-configuration-metadata.json 文件没有正常生成。
解决方案 我在 stackoverflow 发现了相关问题。
最终在 github 找到了解决方案。
在 pom.xml 添加 execution
org.jetbrains.kotlin kotlin-maven-plugin kapt kapt org.springframework.boot spring-boot-configuration-processor${springboot.version} org.jetbrains.kotlin kotlin-maven-allopen ${kotlin.version} org.jetbrains.kotlin kotlin-maven-noarg ${kotlin.version}

每次生成 spring-configuration-metadata.json 文件时需要执行编译命令
mvn compile

结果 【Kotlin使用SpringBoot的ConfigurationProperties注解,配置文件没有提示解决方案。】做完上面的步骤之后,成功的生成了 spring-configuration-metadata.json 文件,IDEA也可已正常的在 application.yaml 文件中进行提示。

    推荐阅读