当前位置: 首页 > 知识库问答 >
问题:

Kotlin Spring Boot注释处理“无法解决配置处理”

苏凯
2023-03-14

我无法在我的Kotlin Spring Boot应用程序中正确地注入@value应用程序属性。在我的application.yml文件中定义并随后在aderator-spring-configuration-metadata.json文件中引用的属性(在resources->META-INF下)没有正确地添加到bean表达式上下文中。使用IntelliJ Version2020.2.1,当我将鼠标悬停在该属性上时,我会看到无法解析配置属性错误。试图运行应用程序(将配置属性值construction-inject到类中)会导致通过构造函数参数表示的不满足依赖项错误。


plugins {
    id("org.springframework.boot") version "2.3.3.RELEASE"
    id("io.spring.dependency-management") version "1.0.10.RELEASE"
    kotlin("jvm") version "1.3.72"
    kotlin("plugin.spring") version "1.3.72"
}

group = "com.myProject"
version = "0.0.1-SNAPSHOT"
java.sourceCompatibility = JavaVersion.VERSION_11

repositories {
    mavenCentral()
}

extra["springCloudVersion"] = "Hoxton.SR8"

dependencies {
    implementation("org.springframework.boot:spring-boot-starter-webflux")
    implementation("com.fasterxml.jackson.module:jackson-module-kotlin")
    implementation("io.projectreactor.kotlin:reactor-kotlin-extensions")
    implementation("org.springframework.boot:spring-boot-configuration-processor:2.3.3.RELEASE")
    implementation("org.jetbrains.kotlin:kotlin-reflect")
    implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8")
    implementation("org.jetbrains.kotlinx:kotlinx-coroutines-reactor")
    testImplementation("org.springframework.boot:spring-boot-starter-test") {
        exclude(group = "org.junit.vintage", module = "junit-vintage-engine")
    }
    testImplementation("io.projectreactor:reactor-test")
}

buildscript {
    repositories {
        mavenCentral()
        jcenter()
    }
    dependencies {
        classpath("com.google.cloud.tools:appengine-gradle-plugin:2.2.0")
    }
}

apply(plugin = "com.google.cloud.tools.appengine")

configure<com.google.cloud.tools.gradle.appengine.appyaml.AppEngineAppYamlExtension> {
    deploy {
        projectId = "my-cloud-project"
        version = "GCLOUD_CONFIG"
    }
}

dependencyManagement {
    imports {
        mavenBom("org.springframework.cloud:spring-cloud-dependencies:${property("springCloudVersion")}")
    }
}

tasks.withType<Test> {
    useJUnitPlatform()
}

tasks.withType<KotlinCompile> {
    kotlinOptions {
        freeCompilerArgs = listOf("-Xjsr305=strict")
        jvmTarget = "11"
    }
}
{
  "properties": [
    {
      "name": "otherApi.baseUrl",
      "type": "java.lang.String",
      "description": "Description for otherApi.baseUrl."
    }
  ]
}

我已经添加了注释处理依赖项,使缓存失效并重新启动,并使用了Kotlin特定的注释处理器(kapt)。我还按照下面的说明进行了操作:https://www.jetbrains.com/help/idea/annotation-processors-support.html

我错过了什么?任何帮助都将不胜感激。谢了!


共有1个答案

劳通
2023-03-14

您需要将以下内容声明为AnnoatationProcessor

implementation("org.springframework.boot:spring-boot-configuration-processor:2.3.3.RELEASE")

annotationProcessor("org.springframework.boot:spring-boot-configuration-processor:2.3.3.RELEASE")
 类似资料:
  • 问题内容: 在阅读 Java 中的自定义注释处理器的代码时,我注意到处理器方法中的这段代码: 碰巧我也在使用自定义注释处理器,所以我想在我的注释处理器中使用上面的代码段。 我以这种方式尝试了上面的代码: & 这条路: 但我没有注意到处理器行为的任何变化。我得到了支票,但看不到有什么用。 我想知道在处理特定回合时有用的用例。 问题答案: 这两项检查都很重要,但是直到在同一项目中一次运行多个注释处理器

  • 主要内容:使用Rem语句注释,注释使用::声明为创建的脚本添加注释或文档总是一个好习惯。 这是一个维护脚本用来理解脚本实际所做的事情所必需的注释。 例如,考虑下面这段没有注释形式的代码。 如果一个没有任何注释的脚本,普通人试图理解脚本,那么需要很多时间来理解脚本做些什么工作。 使用Rem语句注释 有两种方法可以在批处理脚本中创建注释; 一个是通过命令。 语句后的任何文本都将被视为注释,不会被执行。 以下是此声明的一般语法。 语法 其中是需要添

  • 在阅读Java中的自定义注释处理器的代码时,我注意到处理器的方法中的这段代码: 碰巧我也在处理一个自定义注释处理器&我想在我的注释处理器中使用上面的代码片段。 但是我没有注意到处理器的行为有任何变化。我得到了检查,但我看不出有什么用。 我想知道在处理某个回合时使用有用的用例。

  • 该链接包含在错误404s中(https://developer.android.com/r/tools/annotation-processor-error-message.html),因此没有帮助。 我已经在android studio设置中启用了注释处理,并将添加到我的注释处理器选项中。我还尝试将、和添加到处理器FQ名称中,但这也没有帮助。 这些是我添加到dependecies下的默认buil

  • 我已经通过使用Java 8的命令提示符编译成功地运行了用于类级保留注释的注释处理器。 但是,当我尝试在eclipse中配置注释处理器并尝试使用选项运行它时,它没有生效。 我已将包含自定义注释处理器类文件的Jar文件包含到

  • 需要注释处理器的帮助。我创建了一个简单的注释处理器,它使用@autoservice注释来检查注释的字段是否为最终字段。但它没有显示任何编译时错误。这是我的配置 注释: 注释处理器: pom文件: 测试文件: