记录一次springboot在读取application-dev配置时遇到的问题

application.yml spring配置如下:

# Spring配置
spring:
  application:
    name: fitness-admin
  # 资源信息
  messages:
    # 国际化资源文件路径
    basename: i18n/messages
  profiles:
    # 配置文件指向   正式:dev 生产:prop  测试:test
    active: dev
  # 文件上传
  servlet:
    multipart:
      # 单个文件大小
      max-file-size:  5000MB
      # 设置总上传的文件大小
      max-request-size:  5000MB
  # 服务模块
  devtools:
    restart:
      # 热部署开关
      enabled: true

我们在做项目中通常会把配置分为多个环境,例如正式dev、生产prop、测试test等等

这时会新建一个读取配置类来读取,例如:

@Component
@ConfigurationProperties(prefix = "gpframework")
public class GpframeworkConfig {
    /**
     * 项目名称
     */
    private String name;

    /**
     * 版本
     */
    private String version;

    /**
     * 版权年份
     */
    private String copyrightYear;

    /**
     * 实例演示开关
     */
    private boolean demoEnabled;

    /**
     * 验证码类型
     */
    private static String captchaType;

    /**
     * 上传路径
     */
    private static String profile;

    /**
     * 图片前缀路径
     */
    private static String prePath;

    /**
     * 图片前缀路径
     */
    private static String shelvesImportTemplate;


    public static String getPrePath() {
        return prePath;
    }

    public void setPrePath(String prePath) {
        GpframeworkConfig.prePath = prePath;
    }

    public static String getShelvesImportTemplate() {
        return shelvesImportTemplate;
    }

    public void setShelvesImportTemplate(String shelvesImportTemplate) {
        GpframeworkConfig.shelvesImportTemplate = shelvesImportTemplate;
    }

    /**
     * 获取地址开关
     */
    private static boolean addressEnabled;

    public static String getCaptchaType() {
        return captchaType;
    }

    public void setCaptchaType(String captchaType) {
        GpframeworkConfig.captchaType = captchaType;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getVersion() {
        return version;
    }

    public void setVersion(String version) {
        this.version = version;
    }

    public String getCopyrightYear() {
        return copyrightYear;
    }

    public void setCopyrightYear(String copyrightYear) {
        this.copyrightYear = copyrightYear;
    }

    public boolean isDemoEnabled() {
        return demoEnabled;
    }

    public void setDemoEnabled(boolean demoEnabled) {
        this.demoEnabled = demoEnabled;
    }

    public static String getProfile() {
        return profile;
    }

    public void setProfile(String profile) {
        GpframeworkConfig.profile = profile;
    }

    public static boolean isAddressEnabled() {
        return addressEnabled;
    }

    public void setAddressEnabled(boolean addressEnabled) {
        GpframeworkConfig.addressEnabled = addressEnabled;
    }

    /**
     * 获取头像上传路径
     */
    public static String getAvatarPath() {
        return getProfile() + "/avatar";
    }

    /**
     * 获取下载路径
     */
    public static String getDownloadPath() {
        return getProfile() + "/download/";
    }

    /**
     * 获取上传路径
     */
    public static String getUploadPath() {
        return getProfile() + "/upload";
    }

}

以上用来读取application-dev.yml里面的配置:

# 项目相关配置
gpframework:
  # 名称
  name: Gpinfo
  # 版本
  version: 1.0.0
  # 版权年份
  copyrightYear: 2022
  # 实例演示开关
  demoEnabled: true
  # 文件路径,使用jvm系统变量,兼容windows和linux;
  profile: ${user.dir}/gpframework/uploadPath
  #图片前缀访问路径
  prePath:
  # 获取ip地址开关
  addressEnabled: false
  # 验证码类型 math 数组计算 char 字符验证
  captchaType: math
  # 货架导入模板地址
  shelvesImportTemplate: shelvesImportTemplate.xlsx

因为是静态所以可以直接使用 GpframeworkConfig.getgetPrePath() 来访问

但是在前段时间我新加了一个配置:

# 阿里云身份证实名认证接口AppCode
aliyunIdCheckAppCode: XXX

然后读取

/**
     * 阿里云身份证实名认证接口AppCode
     */
    private static String aliyunIdCheckAppCode;

    public static String getAliyunIdCheckAppCode() {
        return aliyunIdCheckAppCode;
    }

    public static void setAliyunIdCheckAppCode(String aliyunIdCheckAppCode) {
        GpframeworkConfig.aliyunIdCheckAppCode = aliyunIdCheckAppCode;
    }

这时会发现怎么读取都是null, 最后找了半天才发现是 setter 的问题

不能把 setter 设为静态方法,否则设置不了值,最后把 static 去掉就能正常读取了。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值