乐趣区

关于java:java中获取配置文件参数的方法

有时候一些常量不想批改业务代码,能够灵便的放在.yml 或者 properties 文件中.
比拟罕用的办法有:

首先键一个类提供 get/setter 办法

@Data
@ConfigurationProperties(prefix = "ums.params")// 两个注解必须加,用来提供给 spring 容器扫描到
@Component
public class UmsConstant {
        /**
         * 平台下单接口
         */
        private String chinaUmsServerApi;

        /**
         * 领取或退款胜利回调
         */
        private String notyApi;

        /**
         * 平台商户号
         */
        private String mid;

        /**
         * 平台终端号
         */
        private String tid;

        /**
         * 消息来源
         */
        private String msgSrc;

        /**
         * 起源编号
         */
        private String msgSrcId;

        /**
         * 签名类型
         */
        private String signType;

        /**
         * app 模式
         */
        private String appDefault;

        /**
         * c 扫 b 模式
         */
        private String qrDefault;

        /**
         * SHA256 密钥
         */
        private String priKey;

}

对应 yml 配置文件:

# 参数配置
ums:
  params:
    #平台下单接口
    chinaUmsServerApi: "http://route-server/api/"
    #领取或退款胜利回调
    notyApi: "http://payCallback/"
    #平台商户号
    mid: "8*****39AAAW"
    #平台终端号
    tid: "A4*****LB"
    #消息来源
    msgSrc: "WWW.****.COM"
    #起源编号
    msgSrcId: "***B"
    #签名类型
    signType: "***256"
    #app 模式
    appDefault: "APP****AULT"
    #c 扫 b 模式
    qrDefault: "QRPA***FAULT"
    #SHA256 密钥
    priKey: "6MB74yfz6y3rnt********wJrr3rS"

1、 静态方法形式赋值给静态方法,长处是全局惟一,通过类名. 办法获取。

@Component// 注解必须加
public class UmsParamsUtil {private static Logger log = LoggerFactory.getLogger(UmsParamsUtil.class);

    @Autowired
    public UmsConstant umsConstant;// 注入对象属性
    
    // 定义动态参数
    public static UmsParamsUtil umsParamsTempleUtil;

    /**
     * 初始化,动态代码块类加载是加载,赋值给动态参数
     */
    @PostConstruct
    public void init(){
        // 对象属性曾经有值
        umsParamsTempleUtil = this;
        // 赋值给以后动态参数
        umsParamsTempleUtil.umsConstant = this.umsConstant;
    }

    /**
     * 参数静态方法获取值
     * @return
     */
    public static UmsConstant umsConstant(){if(umsParamsTempleUtil.umsConstant == null){log.error("***** 为空");
        }
// 给对象赋值
        return umsParamsTempleUtil.umsConstant;
    }
}

应用形式:UmsParamsUtil.umsConstant.getSignType…

2、 通过静态方法类加载时间接赋值

@Data
@ConfigurationProperties(prefix = "ums.params")// 两个注解必须加,用来提供给 spring 容器扫描到
@Component
public class UmsConstant {
        /**
         * 平台下单接口
         */
        private String chinaUmsServerApi;

        /**
         * 领取或退款胜利回调
         */
        private String notyApi;

        // 初始化
        @PostConstruct
        public void init(){UmsStatic.setParams(this);
    }
        
}
public class UmsStatic(){
       public static String API_N;

       public static String API_NN;

       public static setParams(UmsConstant umsconstant){
           UmsStatic.API_N = umsconstant.getXXX;
           UmsStatic.API_NN = umscontant.getXXXX;

         }
    }

3、 通过配置类赋值

@Configuration
public class WebConfiguration extends WebAutoConfiguration {

    @Bean
    @ConfigurationProperties(prefix = "ums.params")
    public UmsConstant umsConstant() {return new UmsConstant();
    }

4、 通过 getbean 形式

signProperties = SpringContextHolder.getBean(SignProperties.class);

5、 通过 proroti 对象形式 …

这种形式须要指定文件,不是很不便。

退出移动版