首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Intellij IDEA抱怨无法解决spring boot属性,但它们工作得很好

Intellij IDEA抱怨无法解决spring boot属性,但它们工作得很好
EN

Stack Overflow用户
提问于 2018-02-24 02:23:46
回答 5查看 59.2K关注 0票数 95

无法解析配置属性'...

我可以通过@Value注解或自动连接环境访问我的属性。但是我自己定义的所有属性在IDEA中都会收到这个警告。我应该怎么做,才能让我的想法识别这些东西,而不是打扰我?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2018-06-10 00:36:57

为了让IntelliJ IDEA知道您的Spring Boot属性,您可以在项目中定义Spring Boot配置元数据

选项1:

如果可以对属性使用@ConfigurationProperties-annotated类,则可以将Spring Boot配置注释处理器添加到类路径中,IntelliJ IDEA将在targetout中为您生成配置元数据

Maven:

代码语言:javascript
运行
复制
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-configuration-processor</artifactId>
    <optional>true</optional>
</dependency>

Gradle:

代码语言:javascript
运行
复制
implementation 'org.springframework.boot:spring-boot-configuration-processor'

选项2:

自己创建配置元数据文件src/main/resources/META-INF/spring-configuration-metadata.json

内容:

代码语言:javascript
运行
复制
{
  "properties": [
    {
      "name": "myapp.someprop",
      "type": "java.lang.String"
    },
    {
      "name": "myapp.someintprop",
      "type": "java.lang.Integer"
    }
  ]
}

选项1和2:

在构建系统(Maven/Gradle)的IntelliJ IDEA工具窗口中,单击“刷新”按钮。

从菜单中选择Build > Rebuild Project

如果警告仍然出现,您可以尝试重新启动IDE。选择File > Invalidate Caches / Restart并单击Invalidate and Restart

票数 109
EN

Stack Overflow用户

发布于 2019-12-24 19:14:52

代码语言:javascript
运行
复制
plugins {
    kotlin("jvm")
    kotlin("kapt")
}

/* ... */

dependencies {
    val configurationProcessor ="org.springframework.boot:spring-boot-configuration-processor:${BuildConstants.springBootVersion}"

    kapt(configurationProcessor) // for jar
    kaptTest(configurationProcessor) // for jar
    annotationProcessor(configurationProcessor) // for IntelliJ Idea
}

/* ... */

kapt {
    annotationProcessor("org.springframework.boot.configurationprocessor.ConfigurationMetadataAnnotationProcessor")
}

/* ... */

tasks {
    withType<KotlinCompile> {
        dependsOn(processResources)
    }
}

Kotlin Kapt是使用元数据和内存所必需的。

Spring Boot Configuration Processor从official Spring documentation生成带有属性元数据的特殊json文件。

因此,要使用属性语法突出显示来分发jar,您需要:

  • 要求Gradle生成此文件
  • 更新任务序列,以便在jar打包之前使用dependsOn生成文件(不确定,我上面的代码是最有效的解决方案,但问题已经解决)

然而,IntelliJ Idea适用于annotationProcessor Gradle配置(不幸的是,我没有确切的答案,为什么它需要确切的答案)。

票数 2
EN

Stack Overflow用户

发布于 2020-06-23 20:02:25

我也遇到了同样的问题,加上没有显示自动补全功能,我发现它适用于IntelliJ旗舰版,而不是社区版。link

可以采取的几个有用的步骤是:

  • 添加Maven依赖项:

代码语言:javascript
运行
复制
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-configuration-processor</artifactId>
    <optional>true</optional>
</dependency>

要从dependencies.

  • coping下载errors.

  • making属性的确切名称以防止@EnableConfigurationProperties(NameOfTheConfigClass.class)

,请刷新

  • 以防止target/classes/META-INF/spring-configuration-metadata.js确保您的配置类已使用@ConfigurationProperties("name-here")注释,并且您已通过Maven将其启用
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48954087

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档