
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;
}