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 文件中进行提示。
推荐阅读
- 由浅入深理解AOP
- 【译】20个更有效地使用谷歌搜索的技巧
- Activiti(一)SpringBoot2集成Activiti6
- mybatisplus如何在xml的连表查询中使用queryWrapper
- MybatisPlus|MybatisPlus LambdaQueryWrapper使用int默认值的坑及解决
- MybatisPlus使用queryWrapper如何实现复杂查询
- SpringBoot调用公共模块的自定义注解失效的解决
- 解决SpringBoot引用别的模块无法注入的问题
- iOS中的Block
- Linux下面如何查看tomcat已经使用多少线程