当前位置: 首页 > article >正文

SpringBoot Configuration Annotation Processor not configured 解决方案和详细问题分析以及作用

目录

1、问题出现:

2、解决方案:?

2.1方式一? 简单粗暴的禁止提示

2.2 方式二 引入jar包

3、问题深入探究


写在前:笔者出现这个问题的时候,大概猜到是什么问题,在网上也是很快找到了解决方案,但是很多帖子,并没有深究,只是单纯的解决了问题。

1、问题出现:

当我们写配置类时就会出现如下的提示,虽然不影响运行,但看着实在碍眼,笔者这个是刚解决了的,为了记录,所以后面才截图,如果是一开始即对应的是后面截图的图片

2、解决方案:

2.1方式一 简单粗暴的禁止提示

在idea打开面板,取消勾选下面的选项即可。

2.2 方式二 引入jar包

刷新依赖即可

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

3、问题深入探究

为什么这个问题idea只是提示,而不是错误呢?那就让我们了解下这个jar包的作用吧。

贴个官网的对于这个jar的解释:https://docs.spring.io/spring-boot/specification/configuration-metadata/annotation-processor.html

这个jar主要是在程序编译后会生成元数据json文件,这个文件的作用是为了方便我们写properties或者yaml文件配置我们自定义的Configuration properties的键时,能显示提示,因此,这也是为什么这个没有也不会报的原因。

spring-boot-configuration-processor 是 Spring Boot 提供的一个注解处理器,它用于处理配置类(Configuration Classes)中的注解。在 Spring Boot 中,我们通常使用注解来标记配置类,例如 @Configuration、@Bean、@PropertySource 等。

这个注解处理器的主要作用是帮助 Spring Boot 框架在编译时处理配置类中的注解,生成相关的元数据,以便在运行时进行配置类的加载和相关操作。它会分析配置类中的注解,并生成必要的代码或配置信息,从而实现 Spring Boot 的自动配置和相关功能。

使用这个注解处理器有几个好处:

提高性能: 在编译时生成元数据,减少了在运行时进行反射扫描的开销,从而提高了应用程序的性能。

更好的 IDE 支持: 注解处理器会生成额外的元数据,使得 IDE 能够更好地理解和支持配置类,提供更好的代码补全、导航和验证等功能。

更严格的编译时检查: 注解处理器可以在编译时检查配置类的合法性,捕获一些错误,例如缺少必需的注解或不合法的配置,从而提高了代码的质量和稳定性。

在 Spring Boot 项目中添加 spring-boot-configuration-processor 依赖后,它会自动与 Maven 或 Gradle 集成,通过注解处理器的方式来处理配置类,提高应用程序的性能和开发效率。

总的来说,spring-boot-configuration-processor 依赖的作用是帮助 Spring Boot 在编译时处理配置类的注解,提高了性能、IDE 支持和编译时检查的效果。

详细可以看以下截图

当我们编译后,会在META-INF文件下生成spring-configure-metadat.json文件,里面的groups、properties、hints中的name与我们自定的配置属性名称一一对应,因此这也就是为什么我们在配置文件键入前面的比如executor,会自动提示后面的值,以及默认的value也是可以配置的,感兴趣可以查看上面贴出的官网。主要是方便开发人员


http://www.kler.cn/a/547631.html

相关文章:

  • STM32——HAL库开发笔记16(SPI外部flash实验2)(参考来源:b站铁头山羊)
  • 论文解读之GPT1:Improving Language Understanding by Generative Pre-Training
  • Unity 命令行设置运行在指定的显卡上
  • 基于大数据的电动汽车销售数据分析系统的设计与实现
  • FFmpeg+SDL实现简易视频播放器
  • DeepSeek帮助解决Oracle死锁问题
  • Spark 和 Flink
  • win11系统 Docker Desktop提示Docker Engine stopped解决全过程记录
  • 移动端测试的挑战与解决方案:兼容性、网络问题及实战策略
  • LLM之循环神经网络(RNN)
  • 几款C#开发的入门书籍与视频教程
  • SpringbootActuator未授权访问漏洞
  • HTML、Vue和PHP文件的区别与联系
  • 利用盲注技术获取表、列、具体数据
  • PyQt6/PySide6 的信号与槽原理
  • LeetCode 232: 用栈实现队列
  • Day64_20250212_图论part8_拓扑排序|dijkstrs(朴素版)
  • GRN前沿:GNNLink:使用图神经网络从单细胞RNA-seq数据预测基因调控链
  • Jenkinsfile怎么写
  • 浅识Linux高阶用法