IDEA 提示:Spring Boot Configuration Annotation Processor not fount in classpath
原因分析
您可以@ConfigurationProperties
使用spring-boot-configuration-processor
jar 注释的项目轻松生成自己的配置元数据文件 。jar包含一个Java注释处理器,在您编译项目时调用该处理器。要使用处理器,请包含依赖项 spring-boot-configuration-processor
解决方案
- 使用Maven时,依赖项应声明为可选,如以下示例所示
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-configuration-processor</artifactId> <optional>true</optional> </dependency>
- 对于Gradle 4.5及更早版本,应在
compileOnly
配置中声明依赖项,如以下示例所示:dependencies { compileOnly "org.springframework.boot:spring-boot-configuration-processor" }
- 使用Gradle 4.6及更高版本时,应在
annotationProcessor
配置中声明依赖项,如以下示例所示:dependencies { annotationProcessor "org.springframework.boot:spring-boot-configuration-processor" }
- 如果您使用的是
additional-spring-configuration-metadata.json
文件,compileJava
则应将任务配置为依赖于processResources
任务,如以下示例所示:
此依赖关系确保在编译期间注释处理器运行时可以使用其他元数据。compileJava.dependsOn(processResources)
处理器选择带注释的类和方法 @ConfigurationProperties
。配置类中的字段值的Javadoc
用于填充description
属性。
[注意]
您应该只对@ConfigurationProperties
字段Javadoc
使用简单文本,因为它们在添加到JSON之前不会被处理。
通过存在标准的getter
和setter
来发现属性,这些getter
和setter
具有对集合类型的特殊处理(即使只有getter
存在也会检测到)。注解处理器还支持使用的@Data
,@Getter
和@Setter
Lombok的注释。
[注意]
如果在项目中使用AspectJ,则需要确保注释处理器仅运行一次。有几种方法可以做到这一点。使用Maven,您可以maven-apt-plugin
显式配置并仅在那里将依赖项添加到注释处理器。您还可以让AspectJ插件在maven-compiler-plugin
配置中运行所有处理并禁用注释处理,如下所示:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<proc>none</proc>
</configuration>
</plugin>