programing

Kotlin @ConfigurationProperties 클래스에 대한 IntelliJ Idea에서 spring-configuration-metadata.json 파일이 생성되지 않습니다.

newstyles 2023. 6. 23. 21:48

Kotlin @ConfigurationProperties 클래스에 대한 IntelliJ Idea에서 spring-configuration-metadata.json 파일이 생성되지 않습니다.

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은 생성자, 게터 및 세터와 동일한 클래스를 생성하며 일반 자바빈으로 작동해야 합니다.

스프링 부트 구성 프로세서가 코틀린 클래스에서 작동하지 않는 이유가 무엇인지 아십니까?

올바른 방향으로 안내해 주셔서 감사합니다.그래서 해결책은 추가하는 것입니다.

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 notation processing.나머지 구성은 동일하게 유지됩니다.

또한 이 라인을 사용하지 않습니다.

optional "org.springframework.boot:spring-boot-configuration-processor"

IntelliJ Idea는 불평할 것입니다.

구성 속성을 확인할 수 없습니다.

application.properties 또는 application.yml의 메시지

Gradle 대신 Maven을 사용하려는 사람들은 다음과 같이 추가해야 합니다.kaptkotlin-maven-vlan 구성에 대한 실행.

<execution>
    <id>kapt</id>
    <goals>
        <goal>kapt</goal>
    </goals>
    <configuration>
        <sourceDirs>
            <sourceDir>src/main/kotlin</sourceDir>
        </sourceDirs>
        <annotationProcessorPaths>
            <annotationProcessorPath>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-configuration-processor</artifactId>
                <version>1.5.3.RELEASE</version>
            </annotationProcessorPath>
        </annotationProcessorPaths>
    </configuration>
</execution>

다음과 같은 컴파일러 플러그인이 작동하지 않는 KT-18022 문제가 있습니다.kotlin-maven-allopen종속성으로 선언되었습니다.

코틀린은 자체 컴파일러를 가지고 있습니다.메타데이터는 Java 컴파일러의 후크 포인트인 주석 프로세서에 의해 생성됩니다.

Kotlin에서 이러한 후크 포인트를 사용할 수 있는지는 모르겠지만, Spring Boot은 현재 Java 이외의 다른 것을 지원하지 않습니다.이게 도움이 될까요?

언급URL : https://stackoverflow.com/questions/37858833/spring-configuration-metadata-json-file-is-not-generated-in-intellij-idea-for-ko