常用工具类之Spring-boot-configuration-processor的学习使用

介绍

在SpringBoot的项目中,往往需要一些配置,但是配置自定义属性时没有代码提示和说明,多有不便,且Idea会对这种配置机型高亮显示,不够美观。我们可以借助spring-boot-configuration-processor自动生成元数据文件来解决上述问题。

server:
  port: 8080
  #你在idea里面可以点击port,进到这个字段里面,还可以看到配置的提示信息
test:
  name: haha
  age: 20
  # 自己自定义的就不能点击

SpringBoot项目生成的jar包内包含有配置属性详细信息的元数据文件(spring-configuration-metadata.json),这些文件能够为在配置application.yml或者application.properties时提供属性说明、默认值和自动补全。
大多数元数据文件是在编译时通过处理使用@ConfigurationProperties注解注释的类的所有属性自动生成的。与此同时,也可以指定格式手动编写一部分元数据,用于极端情况或者更高级的用法。

自定义配置怎么出现提示呢?

使用spring-boot-configuration-processor实现,其作用是生产配置元数据。
spring-boot-configuration-processor其实是一个注解处理器,在编译阶段干活的,一般在maven的声明都是 ,optional 为true。说白了就是给自定义的配置类生成元数据信息的,因为spring也不知道你有哪些配置类,所以搞了这个方便大家自定义
官网介绍如下:https://docs.spring.io/spring-boot/docs/current/reference/html/index.html

  1. 添加下列依赖
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
            <optional>true</optional>
        </dependency>

用法
自定义配置类

import lombok.Getter;
import lombok.Setter;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;

@Configuration
@Component
@ConfigurationProperties(prefix = "test.config")
@Setter
@Getter
public class TestConfiguration {
/*
*姓名
*/
    private String name;
 /*
 * 年龄
 */   
 private String age;
}

配置类开头加上@PropertySource(“”),其余用法与加载yml的配置一样

@Component
@PropertySource(value = {"classpath:static/config/test.properties"},
        ignoreResourceNotFound = false, encoding = "UTF-8", name = "test.properties")
public class AuthorTest {
 
    @Value("${author.name}")
    private String name;
    @Value("${author.age}")
    private int age;
}

@PropertySource 中的属性解释
1.value:指明加载配置文件的路径。
2.ignoreResourceNotFound:指定的配置文件不存在是否报错,默认是false。当设置为 true 时,若该文件不存在,程序不会报错。实际项目开发中,最好设置 ignoreResourceNotFound 为 false。
3.encoding:指定读取属性文件所使用的编码,我们通常使用的是UTF-8。

当我们使用 @Value 需要注入的值较多时,代码就会显得冗余,于是 @ConfigurationProperties 登场了

@Component
@ConfigurationProperties(prefix = "author")
@PropertySource(value = {"classpath:static/config/authorSetting.properties"},
        ignoreResourceNotFound = false, encoding = "UTF-8", name = "authorSetting.properties")
public class AuthorTest {
 
    private String name;
    private int age;
 
}
@RestController
@EnableConfigurationProperties
public class DemoController {
 
    @Autowired
    AuthorTest authorTest;
 
    @RequestMapping("/")
    public String index(){
        return "author's name is " + authorTest.getName() + ",ahtuor's age is " + authorTest.getAge();
    }
}

使用 @EnableConfigurationProperties 开启 @ConfigurationProperties 注解。
若是依旧无法自动提示,可以尝试开启IDE的Annonation Processing
在这里插入图片描述

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值