我正在尝试为基于Spring Boot的项目生成spring-configuration-metadata.json文件。如果我使用Java @ConfigurationProperties 类,则会正确并自动生成:
@ConfigurationProperties("myprops") public class MyProps { private String hello; public String getHello() { return hello; } public void setHello(String hello) { this.hello = hello; } }
但是,如果我使用Kotlin类,则不会生成 spring-configuration-metadata.json 文件(我已经尝试了 gradle build 和Idea Rebuild Project )。
@ConfigurationProperties("myprops") class MyProps { var hello: String? = null }
AFAIK Kotlin使用构造函数,getter和setter生成相同的类,并且应充当常规Java Bean。
有什么想法为什么 spring-boot-configuration-processor 不适用于Kotlin类?
谢谢您指出正确的方向。所以解决方案是添加
dependencies { ... kapt "org.springframework.boot:spring-boot-configuration-processor" optional "org.springframework.boot:spring-boot-configuration-processor" ... }
生成 build.gradle 文件,在命令行中运行 gradle compileJava 并在IntelliJ Idea设置 Build,Execution,Deployment- > Compiler-> Annotation Processor-> Enable annotation processing中打开注释处理。其余配置保持不变
另请注意,没有此行
optional "org.springframework.boot:spring-boot-configuration-processor"
IntelliJ Idea将抱怨
无法解析配置属性
您的 application.properties* 或 application.yml中的 消息 *