如何让springboot工程中自定义配置项在idea中提示

本文介绍了如何在IDEA中为SpringBoot应用生成配置提示,包括通过添加spring-boot-configuration-processor依赖自动解析配置类生成提示文件,以及手动编写additional-spring-configuration-metadata.json来补充配置。同时,解释了为何在@ConfigurationProperties注解下可能出现警告,以及解决办法。此外,还提及了注解处理器在编译时的作用,如Lombok的@Getter/@Setter的生成原理,并讨论了如何在打包时排除这些依赖以减小jar大小。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

让自定义配置项在idea中提示

自动生成提示项

Springboot工程中添加如下依赖

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

下面编写自己的配置类,并且需要通过@ConfigurationProperties注解指定配置项的前缀。注意属性的Getter/Setter方法不能少,否则无法生成提示文件.
在这里插入图片描述
在编写好配置类之后,我们需要对项目编译一下,这样是为了让spring-boot-configuration-processor能够工作,执行自己的处理逻辑,在target目录生成如下的json文件。这个文件里面则是根据我们的配置类动态生成配置提示内容。
在这里插入图片描述
在这里插入图片描述
当我们在application.properties(yml同样支持)输入配置项的前缀时则会出现如下提示,这样可以帮助我们快速的编写配置,并且不会出现错误,提高开发效率。特别是在使用一个新框架时,如果能够提示框架的一些配置,那我们就可以快速上手,做一些基础配置。

如下是使用的效果:
在这里插入图片描述
细心的读者会发现,第一张图中@ConfigurationProperties注解下出现了一个红色警告线.
在这里插入图片描述
这是提示我们这个配置类不会被注册成Spring管理的Bean,虽然这并不影响生成spring-configuration-metadata.json文件,但我们没有办法通过@Autowired注解使用这个配置类,即使在application.properties中写了属性值也无效,而且还会向你抛出个异常。

所以为了能够@Autowired这个配置类,我们还需要使用@Component@Configuration让其被Spring扫描到.

@Setter
@Getter
@Component
//@Configuration
@ConfigurationProperties(prefix = "my.db")
public class DbConfig {
    private String username;
    private String password;
}

除了这种方式,还有其它的使用方式参考: @EnableConfigurationProperties @ConfigurationProperties @ConfigurationPropertiesScan实现原理

手动生成提示项

其实开始添加的依赖spring-boot-configuration-processor作用只是为了能够解析我们的配置类,生成spring-configuration-metadata.json文件,如果我们不添加该依赖,按照同样的格式、文件名称手写编写这个json文件,也可以实现提示。
去除依赖,在resource/META-INF目录下创建spring-configuration-metadata.json文件,编写和上面json相同的内容,为了展示效果,这里换个属性名.
在这里插入图片描述
但实际上手动编写spring-configuration-metadata.json文件存在两个问题:

  1. 是编写容易出错;
  2. 是会被自动生成的json文件覆盖。

为了解决第2个问题: SpringBoot给我们规定了名为additional-spring-configuration-metadata.json的文件,便于我们手动编写一些特殊的配置项,在生成json文件里面的内容时,会将additional-spring-configuration-metadata.json里面的内容追加到spring-configuration-metadata.json,更多json属性参考SpringBoot官方文档.

效果如下:
在这里插入图片描述

为什么能在idea中提示?

SpringBoot只是给出了json格式的配置文件,由idea插件读取该文件实现提示,而且只有idea Ultimate版本才会有这个功能,Community社区版本无法提示。当然eclipse中也有插件可以来实现配置项的自动提示。
在这里插入图片描述

spring-boot-configuration-processor工作原理

在自动生成配置提示的json文件时,最后一步就是编译项目。就是为了让spring-boot-configuration-processor执行,其实就是利用了java的编译时期的spi扩展机制。javax.annotation.processing.Processor(注解处理器)

注解处理器(Annotation Processor)是javac内置的一个用于编译时扫描和处理注解(Annotation)的工具,在程序编译阶段工作,所以我们可以在编译期间通过注解处理器进行我们需要的操作。

比较常用的用法就是在编译期间获取相关注解数据,然后动态生成.java源文件(让机器帮我们写代码),通常是自动产生一些有规律性的重复代码,解决了手工编写重复代码的问题,大大提升编码效率。
在这里插入图片描述
实际上我们常用的Lombok这个jar,通过@Getter/@Setter生成字段的getter/setter方法也是利用了同样的原理.
在这里插入图片描述
由于这个两个jar包实际上只是在编译期执行,运行期间不会用到,所以在打包时,建议剔除这两个依赖,让打包的jar尽量的小。
在springboot中需如下配置:

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <configuration>
                <excludes>
                    <exclude>
                        <groupId>org.projectlombok</groupId>
                        <artifactId>lombok</artifactId>
                    </exclude>
                    <exclude>
                        <groupId>org.springframework.boot</groupId>
			            <artifactId>spring-boot-configuration-processor</artifactId>
                    </exclude>
                </excludes>
            </configuration>
        </plugin>
    </plugins>
</build>
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值