programing

@ConfigurationProperties 스프링 부팅 구성 주석 프로세서를 클래스 경로에서 찾을 수 없습니다.

magicmemo 2023. 3. 22. 20:57
반응형

@ConfigurationProperties 스프링 부팅 구성 주석 프로세서를 클래스 경로에서 찾을 수 없습니다.

Spring Boot에서 커스텀 속성을 완성하려고 합니다.

인텔리J IDEA 2016을 통해 심플한 프로젝트를 만들려고 했습니다.3:

  1. Spring Boot Initializer를 사용하여 새로운 Gradle 프로젝트를 작성했습니다(체크한 것은 전혀 없습니다).
  2. 를 만들었습니다.Properties.

가 주석을 달았을 때@ConfigurationProperties알림

서류상으로는 다음 사항을 프로젝트에 추가해야 한다고 되어 있었습니다.

dependencies {
    optional "org.springframework.boot:spring-boot-configuration-processor"
}

compileJava.dependsOn(processResources)

그 후 프로젝트를 재구축하고 설정에서 주석 프로세서를 활성화하려고 했지만 알림이 사라지지 않았습니다.안 ).my를 참조해 주세요.

저도 같은 문제가 있었어요.아이디어 2017.2와 gradle 4.1을 사용하고 있는데, 어떤 블로그에서는 다음과 같이 추가하라고 했습니다.

dependencies {
    optional "org.springframework.boot:spring-boot-configuration-processor"
}

그런데 이렇게 바꿨어요.

dependencies {
    compile "org.springframework.boot:spring-boot-configuration-processor"
}

그리고 경고는 사라졌습니다.

Spring Boot 문서에 따르면 Gradle 4.6 이후의 올바른 설정은 다음과 같습니다.

dependencies {
    annotationProcessor group: 'org.springframework.boot', name: 'spring-boot-configuration-processor'
    // ...
}

는 IntelliJ IDEA에 대응하고 있습니다.annotationProcessor193.3382(2019.3) 이후부터 적용되고 있습니다.IntelliJ IDEA 설정에서 주석 처리를 활성화하는 것을 잊지 마십시오.

사용하고 있는 에게 Intellij는 maven의 .더하는 것 같다annotationProcessorPaths★★★★★★★★★★★★★★★★★를 통해maven-compiler-plugin마침내 야수를 길들였다.

하세요.version이치노당신의 효과적인 POM에 이미 있을 거라고 생각합니다.

이유: 맵 구조 주석 프로세서가 설정된 커스텀 부모 폼을 사용하고 있었습니다.annotationProcessorPaths그 결과 IntelliJ는 다른 모든 주석 프로세서를 수동으로 지정하도록 요구하게 되었습니다.

<build>
<plugins>
  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <configuration>
      <annotationProcessorPaths>
        <path>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-configuration-processor</artifactId>
          <version>2.0.4.RELEASE</version>
        </path>
      </annotationProcessorPaths>
    </configuration>
  </plugin>
</plugins>
</build>

Maven 또는 Gradle을 사용하는 사용자에게는 spring-boot-configuration-processor에 종속성을 추가합니다.

메이븐:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-configuration-processor</artifactId>
    <optional>true</optional>
</dependency>

Gradle 4.5 이전

dependencies {
     compileOnly "org.springframework.boot:spring-boot-configuration-processor"
}

Gradle 4.6 이후

dependencies {
      annotationProcessor "org.springframework.boot:spring-boot-configuration-processor"
}

상세한 것에 대하여는, 「Annotation Processor 를 사용해 독자적인 메타데이터를 작성한다」(https://docs.spring.io/spring-boot/docs/2.3.1.RELEASE/reference/html/appendix-configuration-metadata.html#configuration-metadata-annotation-processor 를 참조해 주세요.

IdEA에서는 다음 두 가지 이유로 인해 이 문제가 발생합니다.

  1. IDEA: Preferences -> Annotation Processors -> Annotation Processors -> Annotation Processors -> Enable(주석 처리 활성화)에서 설정이 선택되어 있는지 다시 확인합니다.
  2. 아이디어를 업데이트한 후 플러그인을 확인하고 업데이트하십시오.플러그인이 새로운 IDEA 버전과 호환되지 않을 수 있으므로 클릭하여 업데이트하십시오.

프롭스 플러그 인을 넣는 걸 깜빡했네요.다만, 2016.3의 플러그인으로도 동작하지 않았던 것을 기억하고 있기 때문에, @CrazyCoder가 말한 대로 Gradle을 다운그레이드 하거나 새로운 2017.1 버전(상세)을 다운로드해 주세요.
외에 ,, 신, 수, also, 신, 습, 습, 。Re-run Spring Boot Configuration Annotation Processor to update generated metadata이문 언제 제제 결결? ???경우 [ ]를 합니다.Refresh all Gradle projects(그래들 사이드 메뉴).

inmaven 프로젝트는 의존관계 spring-boot-configuration-processor를 추가하고 @EnableConfigurationProperties(AppProperties.class)로 메인클래스를 마킹하는 데 도움이 됩니다.

누가 좀 도와줄까?

IntelliJ 버전 2018.3에서는 이 문제를 다음과 같이 해결했습니다.

Gradle 4.5 이전 버전에서는 다음 예시와 같이 compile Only Configuration에서 의존관계를 선언해야 합니다.

dependencies {
  compileOnly "org.springframework.boot:spring-boot-configuration-processor"
}

Gradle 4.6 이후에서는 다음 예시와 같이 annotationProcessor 설정에서 의존관계를 선언해야 합니다.

dependencies {
  annotationProcessor "org.springframework.boot:spring-boot-configuration-processor"
}

Kotlin 프로젝트의 경우 Gradle 4.6 이후 작업 구성은 주석 프로세서를 사용합니다.

apply plugin: "kotlin-kapt"

dependencies {
    kapt("org.springframework.boot:spring-boot-configuration-processor:$springBootVersion")
    compileOnly("org.springframework.boot:spring-boot-configuration-processor:$springBootVersion")
}

다음과 같이 @ConfigurationProperties 주석을 사용하는 클래스를 메인클래스에서 언급해야 합니다.

@EnableConfigurationProperties(AppProperties.class)

@ConfigurationProperties를 사용하는 속성 구성 클래스는 다음과 같습니다.

import org.springframework.boot.context.properties.ConfigurationProperties;


@ConfigurationProperties(prefix = "app")
public class AppProperties {
    String name;
    String id;
}


메인 클래스는 이렇게 될 것이다.

import com.auth2.demo.config.AppProperties;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.context.properties.EnableConfigurationProperties;

@SpringBootApplication
@EnableConfigurationProperties(AppProperties.class)
public class DemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }

}

인텔리J 버전 2018.1.2에서도 같은 문제가 있었습니다.spring-boot-configuration-processor의 실제 버전도 정의해야 했습니다.

compile('org.springframework.boot:spring-boot-configuration-processor:2.0.1.RELEASE') 

다음 작업을 수행할 수 있습니다.

buildscript {
    repositories {
        jcenter()
        maven { url 'https://repo.jenkins-ci.org/public/' }
        maven { url 'http://repo.spring.io/plugins-release' }
    }
    dependencies {
        classpath "io.spring.gradle:propdeps-plugin:0.0.9.RELEASE"
    }
}

...

apply plugin: 'propdeps'
apply plugin: 'propdeps-eclipse'
apply plugin: 'propdeps-idea'

...

dependencyManagement {
    imports {
        mavenBom 'org.springframework.boot:spring-boot-starter-parent:2.0.0.RELEASE'
    }
}

...

dependencies {
    compile "org.springframework.boot:spring-boot-starter"
    compile "org.springframework.boot:spring-boot-starter-actuator"
    annotationProcessor "org.springframework.boot:spring-boot-configuration-processor" // for @ConfigurationProperties, make sure compileJava.dependsOn(processResources)
    ...
}

compileJava.dependsOn(processResources)

Spring Boot 문서에 따르면 Gradle 4.5 이전 버전의 올바른 설정은 다음과 같습니다.

dependencies {
    compileOnly group: 'org.springframework.boot', name: 'spring-boot-configuration-processor'
    // ...
}

Spring의 웹사이트에는 그것을 작동시키는 방법에 대한 훌륭한 설명이 포함된 튜토리얼이 있다.아래의 "설정 속성" 섹션에 있는 단계를 따르십시오.

다른 도 있습니다.실행입니다.실행./gradlew kaptKotlin수동으로 조작할 수 있습니다.

클래스2021년 3월 IDEA는 Kotlin 속성 클래스 위에 경고를 표시합니다. 하다에서 를 할 수 있습니다..propertiesKotlin 속성 클래스로 파일을 보내지만 그 반대는 아닙니다.

https://spring.io/guides/tutorials/spring-boot-kotlin/ 에서 "Configuration Properties" 부분까지 스크롤 다운합니다.

또는 GitHub의 같은 페이지:

https://github.com/spring-guides/tut-spring-boot-kotlin/blob/master/README.adoc#configuration-properties

언급URL : https://stackoverflow.com/questions/42839126/configurationproperties-spring-boot-configuration-annotation-processor-not-foun

반응형