首页 > 其他分享 >SpringBoot读取配置文件@Value || @ConfigurationProperties

SpringBoot读取配置文件@Value || @ConfigurationProperties

时间:2024-03-23 12:12:18浏览次数:24  
标签:绑定 配置文件 配置 Value ConfigurationProperties path 注解

@Value 注解

优点

  1. 简单易用@Value 注解非常简单,适用于读取单个属性或简单的配置。
  2. 灵活性:可以在任何 Spring 管理的 bean 中使用 @Value 注解,包括普通的 bean、控制器、服务等。

缺点

  1. 缺乏类型安全性@Value 注解不提供类型安全性检查,如果配置值的类型不匹配,只有在运行时才能发现。
  2. 不适用于大量配置:当需要读取大量配置时,使用 @Value 注解需要编写大量的注解,不够便于管理。
  3. 不能使用松散绑定:无法使用松散绑定,属性名必须与配置文件中的键完全匹配。

@ConfigurationProperties 注解

优点

  1. 类型安全@ConfigurationProperties 提供类型安全的配置绑定,Spring Boot 可以在启动时对配置属性的类型进行验证,减少了在运行时出现配置错误的可能性。
  2. 支持松散绑定:可以通过 @ConfigurationProperties 支持松散绑定,属性名不需要严格匹配,减少了配置错误的可能性。
  3. 适用于大量配置@ConfigurationProperties 更适合于读取大量配置,可以使用前缀来对配置进行分组,使配置更易于管理。
  4. 支持嵌套属性@ConfigurationProperties 支持嵌套属性的绑定,可以将配置信息组织为多层次的结构。

缺点

  1. 需要额外的类:使用 @ConfigurationProperties 需要额外编写一个 Java 类来映射配置属性,可能增加了代码量。
  2. 相对复杂:相对于 @Value 注解,@ConfigurationProperties 略微复杂一些,需要一定的配置和理解。

选择建议

  • 如果您的配置比较简单,只需要读取少量的配置项,并且对类型安全性要求不是很高,那么可以使用 @Value 注解。
  • 如果您的配置比较复杂,有大量的配置项,并且对类型安全性要求较高,建议使用 @ConfigurationProperties 注解。它更适合于组织和管理大量的配置信息,同时提供了类型安全的配置绑定功能。

 

@ConfigurationProperties使用演示:

比如我想在mvc请求中添加拦截器,拦截指定路径的path做相应处理,这个path就可以在配置文件application.properties中读取,避免硬编码问题
rate.limit.path=/test/**

@ConfigurationProperties(prefix = "rate.limit")
public class RateLimitConfig {

    private String path;

    public String getPath() {
        return path;
    }

    public void setPath(String path) {
        this.path = path;
    }

}


@Configuration
public class WebMvcConfig implements WebMvcConfigurer {

    private final RateLimitConfig rateLimitConfig;

    public WebMvcConfig(RateLimitConfig rateLimitConfig) {
        this.rateLimitConfig = rateLimitConfig;
    }
    
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(new RateLimitInterceptor()).addPathPatterns(rateLimitConfig.getPath());
    }
}

 

标签:绑定,配置文件,配置,Value,ConfigurationProperties,path,注解
From: https://www.cnblogs.com/ashet/p/18090951

相关文章

  • 开窗函数进阶last_value特别地方
    有了开窗函数,让我们做统计方便很多。row_number(),sum,等常规用法,便不在这里讲。我们从一个问题开始withabcas(select1asidunionallselect2unionallselect3unionallselect4)selectid,FIRST_VALUE(id)over(orderbyid)asfirstid,LAST_VALUE(id)o......
  • @Autowired,@Resource,@Value,@Lazy注入的核心逻辑原理
    classDefaultListableBeanFactoryextendsAbstractAutowireCapableBeanFactory{@Override@NullablepublicObjectresolveDependency(DependencyDescriptordescriptor,StringrequestingBeanName,Set<String>autowiredBeanNames,TypeConverter......
  • QT6 android下配置文件打包到APK
    一.遇到问题   用QT做android开发,生成的apk文件默认不包含程序配置文件和png文件,导致程序在android上无法读取必要的参数和logo,本文主要解决这个问题,并详细讲述QTandroid的apk程序打包流程。二.APK打包流程1.如何生成APK  当我们的工程的构建套件选择Android编译器......
  • nicerefresh--自动刷新Spring中@Value的值
    nicerefresh:自动刷新Spring项目中@Value的值。@RefreshScope虽然有这个功能,但是,它在很多场景下会失效!而nicerefresh就是为了解决这一问题而产生的。用了nicerefresh,不需要加任何注解,即可自动刷新配置!官网:https://www.yuque.com/knifeblade/opensource/nicerefreshgitee:https://......
  • Redis第二课,1.set key value(设置对应的key和value)2.get key(得到value值)Redis全局
    Redis的启动 redis-cli目录1.setkeyvalue(设置对应的key和value)2.getkey(得到value值)Redis全局命令(支持很多的数据结构)3.keys(用来查询当前服务器匹配的key)生产环境/线上环境4.exist(判定key是否存在):判定key是否存在​编辑5.DEL  key 返回删掉的key......
  • 【已解决】null value in column “XXX“ violates not-null constraint当我数据库的
    报错信息:nullvalueincolumn"id"violatesnot-nullconstraintDetail:Failingrowcontains(11110,1,null) 一般来说,是因为插入的主键Id为空引起的。这就和我们数据库中的设置默认值产生了冲突,我设置了默认值,为什么他还是报这个字段不能为空的错误?这个时候就要......
  • 一个基于配置文件构建有向无环图,并多线程运行图上节点的例子
    #include<iostream>#include<memory>#include<thread>#include<vector>classNode{public:virtualvoidshow()=0;virtualboolhasFinished(){returnhas_finished_;}protected:boolhas_finished_=false;};classA......
  • windows下启停jar并指定application.yml配置文件
    启动脚本start.bat@echooffREM设置jar文件名和application.yml文件名setJAR_FILE=xxx-boot.jarsetYML_FILE=application-prod.ymlsetACTIVE=prodsetPORT=8080REM启动jar:startjava-jar%JAR_FILE%--server.port=%PORT%--spring.profiles.active=%ACTIVE%--s......
  • Python配置文件使用教程
    在Python应用程序开发过程中,配置文件扮演着重要的角色。配置文件可以用来存储应用程序的各种设置、选项和参数,使得程序更加灵活和可配置。本文将介绍Python中如何使用配置文件,并提供一些常见的配置文件处理方法。一、配置文件格式常见的配置文件格式有多种,包括INI格式、J......
  • Python配置文件使用教程
    在Python应用程序开发过程中,配置文件扮演着重要的角色。配置文件可以用来存储应用程序的各种设置、选项和参数,使得程序更加灵活和可配置。本文将介绍Python中如何使用配置文件,并提供一些常见的配置文件处理方法。一、配置文件格式常见的配置文件格式有多种,包括INI格式、JS......