当前位置: 首页 > 面试题库 >

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

陈哲
2023-03-14
问题内容

我正在尝试为基于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中的 消息 *



 类似资料:
  • 我试图为我的基于Spring Boot的项目生成spring-configuration-metadata.json文件。如果我使用Java@ConfigurationProperties类,它会正确自动地生成: 但是如果我使用Kotlin类,spring配置元数据。json文件没有生成(我已经尝试过gradle build和Idea Rebuild项目)。 AFAIK Kotlin使用构造函数、

  • 报告不提供serialVersionUID字段的任何可序列化类。如果没有serialVersionUID字段,对类的任何更改都将使先前序列化的版本不可读。 但这只适用于Java类

  • 我有一个来自MongoDB转储的文件。转储还生成一个文件,该文件似乎包含索引定义。 null 我的还原以以下行结束: 有一行表示它正在恢复索引,但具体引用文件。

  • 我对JOOQ框架(3.13.4)以及Spring Boot和Java8有问题。 问题是我试图使用java代码方式生成域类(而不是使用带有maven的codegen插件,这在自定义命名策略提供程序方面遇到了一些麻烦)。因此,首先让我向您展示包含(至少我相信它包含)所有必要bean的@Configuration类: 可路由数据源是一种扩展抽象路由数据源的类型,因为在这种情况下,我需要有可能在运行时更改

  • 我想使用Kotlin读取yaml配置文件,下面是我的代码: 类以使用配置: 看起来,如果yaml文件有array/list,Kotlin无法正确读取它,但它在没有array的情况下工作。 我有完全相同的代码,为Java工作。我的静态编程语言代码有问题吗?

  • 问题内容: 情况: 我有一个带有字段的类,因此它们不在构造函数中: 我想拥有一个包含所有字段的方法,并且不想手动编写它,以避免锅炉打印。在Java中,我将使用 Lombok 注释解决此问题。 题: 有什么方法可以在Kotlin中实施吗? 问题答案: 推荐的方法是手动编写(或由IDE生成),并希望您没有太多这样的类。 目的是为了适应最常见的85%的情况,而剩下15%留给其他解决方案。

  • 我正在用Spring Boot2和Kotlin构建一个应用程序。 不知何故,我就是无法让ConfigurationProperties工作。 据我所知,当运行Maven时,应该在中创建文件 注释似乎是由Spring接收的,但是IntelliJ只是不创建文件,这意味着它只是不起作用的自动完成。 那么如何让IntelliJ创建文件呢?

  • 我正在使用Maven生成一个war文件。我正试图让它在战争中生成一个清单文件。现在它没有发生。我已经在我的pom中包括了以下内容。xml,但我无法让它输出包含该信息的清单文件。有人有什么想法或建议吗?没有舱单。mf被投入战争。