• 【Spring Boot】从配置文件中读取配置参数


    前言

            在生产环境中,经常会用到各种各样的参数,为了避免代码太过死板,一般将参数写入配置文件,然后需要用到参数的时候从配置文件中读取,下面总结出几种从配置文件中读取配置参数的方法。


    环境搭建

    现有配置文件application.properties,内容如下所示

    1. # 接口请求基础路径
    2. base.param.url = http://192.168.1.110:18081/interaction/v1/
    3. # 平台标识
    4. base.param.platformID = 123456789
    5. # 平台密钥
    6. base.param.platformSecret = AaBbCcDd

    下面实现从配置文件中读取配置参数 


    @Value注解读取配置参数

    1、非静态参数

    一般情况下直接使用@Value注解即可获取到参数,然后就可以在方法中使用该参数,比如在控制层中使用,使用方法如下

    1. @Value("${base.param.url}")
    2. private String baseUrl;
    3. @Value("${base.param.platformID}")
    4. private String platformID;
    5. @Value("${base.param.platformSecret}")
    6. private String platformSecret;

    2、静态参数

    当工具类中的方法需要从配置文件读取参数时,需要将参数定义为静态,才可以在静态方法中获取到,这时候就不能只配置个@Value注解就行了,实现方法如下:

    1. @Component
    2. public class Common {
    3. private static String platformID;
    4. @Value("${base.param.platformID}")
    5. public void setPlatformID(String platformID) {
    6. Common.platformID = platformID;
    7. }
    8. }

    将@Value注解在set方法上,并且类上要加@Component注解。


    @PropertySource注解创建配置类

    目前该注解只支持properties文件引入,并不支持yml。

    1、maven依赖

    1. <!--使用xml或properties配置所依赖的包 @PropertySource-->
    2. <dependency>
    3. <groupId>org.springframework.boot</groupId>
    4. <artifactId>spring-boot-configuration-processor</artifactId>
    5. <optional>true</optional>
    6. </dependency>

    2、创建配置类

    1. import lombok.Data;
    2. import org.springframework.boot.SpringBootConfiguration;
    3. import org.springframework.boot.context.properties.ConfigurationProperties;
    4. import org.springframework.context.annotation.PropertySource;
    5. @Data
    6. @SpringBootConfiguration
    7. @PropertySource(value = {"classpath:application.properties"})
    8. @ConfigurationProperties(prefix = "base.param")
    9. public class ParamProperties {
    10. // 接口请求基础路径
    11. private String url;
    12. // 平台标识
    13. private String platformID;
    14. // 平台密钥
    15. private String platformSecret;
    16. }

    其中:

    • classpath指向对应的配置文件名称
    • prefix指向配置文件中的名称

    3、使用方式

    1. public class ResponseTask {
    2. @Autowired
    3. private ParamProperties paramProperties;
    4. private String getToken(){
    5. TokenEntity tokenEntity = new TokenEntity();
    6. tokenEntity.setPlatformID(paramProperties.getPlatformID());
    7. tokenEntity.setPlatformSecret(paramProperties.getPlatformSecret());
    8. }
    9. }

  • 相关阅读:
    网络与VPC之动手实验
    [附源码]java毕业设计篮球俱乐部管理系统
    “量化交易”、“算法交易”、“电子交易”等新型交易模式是如何发展起来的呢?
    Rockland一抗丨B-藻红蛋白抗体解决方案
    API接口接入电商平台案例,采集淘宝天猫拼多多1688京东LAZADA数据按关键字搜索商品示例
    12 导数的概念
    Flink学习笔记(四):Flink 四大基石之 Window 和 Time
    elasticsearch快速应用于SpringBoot
    必须要会回答的Java面试题(字符串篇)
    AC修炼计划(AtCoder Regular Contest 180) A~C
  • 原文地址:https://blog.csdn.net/qq_37634156/article/details/125431993