весна-конфигурация-метаданные.файл json не генерируется в IntelliJ Idea для класса Kotlin @ConfigurationProperties
Я пытаюсь создать метаданные spring-configuration -.JSON-файл для моего проекта на основе Spring Boot. Если я использую 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-конфигурация-метаданные.в JSON файл не генерируется (я пробовал оба gradle build и идея Перестроить Проект).
@ConfigurationProperties("myprops")
class MyProps {
var hello: String? = null
}
AFAIK Kotlin генерирует тот же класс с конструктором, геттеры и сеттеры и должны действовать как обычный Java bean.
любые идеи, почему spring-boot-конфигурация-процессор не работает с классами Kotlin?
3 ответов
Спасибо, что указал мне в правильном направлении. Таким образом, решение заключается в добавлении
dependencies {
...
kapt "org.springframework.boot:spring-boot-configuration-processor"
optional "org.springframework.boot:spring-boot-configuration-processor"
...
}
to построить.Gradle в file, run gradle compileJava в командной строке и включите обработку аннотаций в настройках IntelliJ Idea сборка, выполнение, развертывание -> компилятор -> обработчик аннотаций -> включить обработку анотаций. Остальная часть конфигурации остается тот же
также обратите внимание, что без этого линия
optional "org.springframework.boot:spring-boot-configuration-processor"
IntelliJ идея будет жаловаться whith
не удается разрешить свойство конфигурации
сообщение в вашей приложение.свойства или приложение.в формате YML
для тех, кто хочет использовать Maven вместо Gradle, вам нужно добавить kapt
выполнение конфигурации Kotlin-maven-plugin.
<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
объявлен как зависимость.
Kotlin имеет свой собственный компилятор. Метаданные генерируются с помощью процессор аннотации это точка подключения в компиляторе Java.
Я понятия не имею, доступна ли такая точка подключения в Kotlin, но в любом случае Spring Boot не поддерживает ничего, кроме Java на данный момент. Может быть!--5-->это поможет?