一尘不染

IntelliJ Idea中没有为Kotlin @ConfigurationProperties类生成spring-configuration- metadata.json文件

spring-boot

我正在尝试为基于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类?


阅读 1061

收藏
2020-05-30

共1个答案

一尘不染

谢谢您指出正确的方向。所以解决方案是添加

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中的 消息 *

2020-05-30