Skip to content
鼓励作者:欢迎打赏犒劳

18-properties工具类

给静态字段赋值

第一种写法

依赖

xml
<!-- Apache Commons Configuration -->
<dependency>
    <groupId>commons-configuration</groupId>
    <artifactId>commons-configuration</artifactId>
    <version>1.10</version> <!-- 最新 1.x 版本 -->
</dependency>
<!-- Apache Commons Lang -->
<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-lang3</artifactId>
    <version>3.17.0</version>
</dependency>

工具类

给静态字段赋值,但是字段是私有的,需要调用get方法访问

java
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.configuration.Configuration;
import org.apache.commons.configuration.ConfigurationException;
import org.apache.commons.configuration.PropertiesConfiguration;
import org.springframework.stereotype.Component;

@Slf4j
@Component
public class Configs {
    private static Configuration configs;

    private static String openApiDomain;   // 支付宝openapi域名
    private static String pid;             // 商户partner id
    private static String appid;           // 商户应用id

    static {
        Configs.init("zfbinfo.properties");
    }

    private Configs() {
        // No Constructor
    }

    // 根据文件名读取配置文件,文件后缀名必须为.properties
    public synchronized static void init(String filePath) {
        if (configs != null) {
            return;
        }

        try {
            configs = new PropertiesConfiguration(filePath);
        } catch (ConfigurationException e) {
            e.printStackTrace();
        }

        if (configs == null) {
            throw new IllegalStateException("can`t find file by path:" + filePath);
        }

        openApiDomain = configs.getString("open_api_domain");
        pid = configs.getString("pid");
        appid = configs.getString("appid");

        log.info("配置文件名: " + filePath);
    }

    public static Configuration getConfigs() {
        return configs;
    }

    public static String getOpenApiDomain() {
        return openApiDomain;
    }

    public static String getPid() {
        return pid;
    }

    public static String getAppid() {
        return appid;
    }

    // 测试
    public static void main(String[] args) {
        String appid = Configs.getAppid();
        System.out.println(appid);
    }
}

第二种方法

推荐这种方法

java
import lombok.Data;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;

/**
 * @author: Administrator
 * Project Name: weixin-public
 * File Name: WxConfig
 * Package Name: com.kakaluote.weixinpublic.wx.config
 * Date: 2020/5/16 16:38
 * Copyright (c) 2020,All Rights Reserved.
 * @Description 微信相关的配置类
 */
@Configuration
@PropertySource(value = {"classpath:wx-config.properties"})
@ConfigurationProperties(prefix = "wx")
public class WxConfig {
    public static String wxPublicAppid;
    public static String wxPublicAppsecret;
    public static String wxOpenAppid;
    public static String wxOpenAppsecret;
    public static String redirectUrl;

    public void setWxPublicAppid(String wxPublicAppid) {
        WxConfig.wxPublicAppid = wxPublicAppid;
    }

    public  void setWxPublicAppsecret(String wxPublicAppsecret) {
        WxConfig.wxPublicAppsecret = wxPublicAppsecret;
    }

    public  void setWxOpenAppid(String wxOpenAppid) {
        WxConfig.wxOpenAppid = wxOpenAppid;
    }

    public  void setWxOpenAppsecret(String wxOpenAppsecret) {
        WxConfig.wxOpenAppsecret = wxOpenAppsecret;
    }

    public  void setRedirectUrl(String redirectUrl) {
        WxConfig.redirectUrl = redirectUrl;
    }
}

wx-config.properties

properties
#微信公众号
wx.wxPublicAppid=wxcbb367fcbeddxxxxx
wx.wxPublicAppsecret=32460bf2525575da53c1e416dxxxxx

#微信开放平台配置
wx.wxOpenAppid=wx025575eac69adxxxx
wx.wxOpenAppsecret=deeae310a38dad7fa9d3e8fxxxxxx
#重定向url
wx.redirectUrl=http://6ygge233.natappfree.cc/callBack/do

私有对象赋值

需要用对象注入方式访问

java
import lombok.Data;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.PropertySource;
import org.springframework.stereotype.Component;

@Component
@PropertySource("classpath:config/alipay.properties")
@Data
public class AlipayUtil {
    @Value("${app_id}")
    private String appId;
    @Value("${gatewayUrl}")
    private String gatewayUrl;
    @Value("${merchant_private_key}")
    private String merchantPrivateKey;
    @Value("${charset}")
    private String charset;
    @Value("${alipay_public_key}")
    private String alipayPublicKey;
    @Value("${sign_type}")
    private String signType;
    @Value("${return_url}")
    private String returnUrl;
    @Value("${notify_url}")
    private String notifyUrl;
}

如有转载或 CV 的请标注本站原文地址