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对象方式...

这种方式需要指定文件,不是很方便。

你可能感兴趣的