读取.properties配置文件总结

该博客主要介绍Java中读取.properties文件的方法,给出了读取route.properties和mccCode.json文件的代码示例。还展示了路由系统的实现,包括RouteWrapper类存放子系统方法路由,ProxyUtil类调用路由系统接口,通过dubbo通信和Java反射机制调用子系统服务。
1,读取.properties文件
import java.util.ResourceBundle;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.google.common.collect.HashBasedTable;
import com.google.common.collect.Table;
import com.ielpm.pay.web.cache.Cache;


/**
 * 存放子系统方法路由,并定期更新配置,由TIMEOUT配置周期
 * @author rpl
 * @date 2016-01-19
 *
 */
public class RouteWrapper {

private static final String KEY = "channel_route";

private static Table<String, String, Route>  table;

private static ResourceBundle ap;

private static Cache routeCache;

private static final Long TIMEOUT = 30L; //MINUTES

static{
routeCache = new Cache<String, Table<String, String, Route>>(TIMEOUT);
}

@SuppressWarnings("unchecked")
public Route getRoute(String channelNo, String transType){
try{
table = (Table<String, String, Route>) routeCache.get(KEY);
if(table == null){
init();
}
}catch(Exception e){
init();
}
return table.get(channelNo, transType);
}

private void convertJsonArray(String jsonArray){
try{
       JSON json = null;
       JSONArray array = JSON.parseArray(jsonArray);
       Route route = null;
       String[] channelNoes;
       for(int i=0,len = array.size(); i<len; i++){
           json = array.getJSONObject(i);
           route = JSON.parseObject(json.toJSONString(), Route.class);
           channelNoes = route.getChannelNo().split(",");
           for(String channelNo : channelNoes){
            table.put(channelNo, route.getTransType(), route);
           }
       }
}catch(Exception e){
e.printStackTrace();
}
    }

private synchronized void init(){
ap = ResourceBundle.getBundle("route");
table = HashBasedTable.create();
String routeJson = ap.getString(KEY);
convertJsonArray(routeJson);
routeCache.put(KEY, table);
}
}






/**
 * 路由类
 * @author rpl
 * @date 2016-01-19
 *
 */
public class Route {


private String channelNo;
private String transType;
private String refInterface;
private String method;
private String refId;
private String desc;

public String getChannelNo() {
return channelNo;
}
public void setChannelNo(String channelNo) {
this.channelNo = channelNo;
}
public String getTransType() {
return transType;
}
public void setTransType(String transType) {
this.transType = transType;
}
public String getMethod() {
return method;
}
public void setMethod(String method) {
this.method = method;
}
public String getDesc() {
return desc;
}
public void setDesc(String desc) {
this.desc = desc;
}
public String getRefId() {
return refId;
}
public void setRefId(String refId) {
this.refId = refId;
}
public String getRefInterface() {
return refInterface;
}
public void setRefInterface(String refInterface) {
this.refInterface = refInterface;
}
@Override
public String toString() {
return "Route [channelNo=" + channelNo + ", transType=" + transType
+ ", refInterface=" + refInterface + ", method=" + method
+ ", refId=" + refId + ", desc=" + desc + "]";
}
}




/**
 * 调用路由系统中的接口:
 * @author rpl
 * @date 2016-01-19
 *
 */
import java.lang.reflect.Method;
import java.util.Map;
import com.ielpm.pay.common.Results;
import com.ielpm.pay.web.bean.Route;
import com.ielpm.pay.web.bean.RouteWrapper;
import com.ielpm.pay.web.spring.BeanFactory;
/*
逻辑:读取route.properties配置文件,根据渠道编号和交易类型查询出一条Route实例信息,通过dubbo将总系统和子系统进行通信,总系统利用Route实例中包含的服务全路径和方法名称利用java反射机制调用对应子系统的服务从而向银行发送请求。
*/
public class ProxyUtil {

@SuppressWarnings("rawtypes")
public static Results handler(String channelNo, String transType, Map args){
Results results = new Results();
try{
Route route = new RouteWrapper().getRoute(channelNo, transType);
if(route == null){
results.setCode("1000");
results.setMsg("没有可用的交易通道");
}else{
Object targetBean = BeanFactory.getBean(route.getRefId());
Class target = Class.forName(route.getRefInterface());
Method method = target.getMethod(route.getMethod(), Map.class);
results = (Results) method.invoke(targetBean, args);
}
}catch(Exception e){
e.printStackTrace();
}
return results;
}
}




/**
 * route.properties文件内容:
 * @author rpl
 * @date 2016-01-19
 *
 */
channel_route=[{"channelNo":"30505", "transType":"pay", "refInterface":"com.ielpm.pay.web.cmbc.service.facade.CMBCWebPayService4d", "refId":"cmbcWebPayService4d", "method":"pay", "desc":"\u6c11\u751f-\u652f\u4ed8" },\
{"channelNo":"30505", "transType":"notify", "refInterface":"com.ielpm.pay.web.cmbc.service.facade.CMBCWebPayService4d", "refId":"cmbcWebPayService4d", "method":"notify", "desc":"\u6c11\u751f-\u540e\u53f0\u901a\u77e5" },\
{"channelNo":"30505", "transType":"callback", "refInterface":"com.ielpm.pay.web.cmbc.service.facade.CMBCWebPayService4d", "refId":"cmbcWebPayService4d", "method":"callback", "desc":"\u6c11\u751f-\u524d\u53f0\u901a\u77e5" },\
{"channelNo":"30505", "transType":"query", "refInterface":"com.ielpm.pay.web.cmbc.service.facade.CMBCWebPayService4d", "refId":"cmbcWebPayService4d", "method":"query", "desc":"\u6c11\u751f-\u67e5\u8be2" },\
{"channelNo":"30505", "transType":"refund", "refInterface":"com.ielpm.pay.web.cmbc.service.facade.CMBCWebPayService4d", "refId":"cmbcWebPayService4d", "method":"refund", "desc":"\u6c11\u751f-\u9000\u6b3e" },\
{"channelNo":"jd001", "transType":"pay", "refInterface":"com.ielpm.pay.web.jd.service.facade.JDWebPayService4d", "refId":"jdWebPayService4d", "method":"pay", "desc":"\u4eac\u4e1c\u7f51\u94f6\u5728\u7ebf-\u652f\u4ed8" },\
{"channelNo":"jd001", "transType":"notify", "refInterface":"com.ielpm.pay.web.jd.service.facade.JDWebPayService4d", "refId":"jdWebPayService4d", "method":"notify", "desc":"\u4eac\u4e1c\u7f51\u94f6\u5728\u7ebf-\u540e\u53f0\u901a\u77e5" },\
{"channelNo":"jd001", "transType":"callback", "refInterface":"com.ielpm.pay.web.jd.service.facade.JDWebPayService4d", "refId":"jdWebPayService4d", "method":"callback", "desc":"\u4eac\u4e1c\u7f51\u94f6\u5728\u7ebf-\u524d\u53f0\u901a\u77e5" },\
{"channelNo":"jd001", "transType":"query", "refInterface":"com.ielpm.pay.web.jd.service.facade.JDWebPayService4d", "refId":"jdWebPayService4d", "method":"query", "desc":"\u4eac\u4e1c\u7f51\u94f6\u5728\u7ebf-\u67e5\u8be2" },\
{"channelNo":"jd002", "transType":"pay", "refInterface":"com.ielpm.pay.web.jd.service.facade.JDWebPayService4d", "refId":"jdWebPayService4d2", "method":"pay", "desc":"\u4eac\u4e1c\u7f51\u94f6\u7eaf\u501f\u8bb0\u5361-\u652f\u4ed8" },\
{"channelNo":"jd002", "transType":"query", "refInterface":"com.ielpm.pay.web.jd.service.facade.JDWebPayService4d", "refId":"jdWebPayService4d2", "method":"query", "desc":"\u4eac\u4e1c\u7f51\u94f6\u7eaf\u501f\u8bb0\u5361-\u67e5\u8be2" },\
{"channelNo":"jd002", "transType":"refund", "refInterface":"com.ielpm.pay.web.jd.service.facade.JDWebPayService4d", "refId":"jdWebPayService4d2", "method":"refund", "desc":"\u4eac\u4e1c\u7f51\u94f6\u7eaf\u501f\u8bb0\u5361-\u9000\u6b3e" },\
{"channelNo":"jd002", "transType":"notify", "refInterface":"com.ielpm.pay.web.jd.service.facade.JDWebPayService4d", "refId":"jdWebPayService4d2", "method":"notify", "desc":"\u4eac\u4e1c\u7f51\u94f6\u7eaf\u501f\u8bb0\u5361-\u540e\u53f0\u901a\u77e5" },\
{"channelNo":"jd002", "transType":"callback", "refInterface":"com.ielpm.pay.web.jd.service.facade.JDWebPayService4d", "refId":"jdWebPayService4d2", "method":"callback", "desc":"\u4eac\u4e1c\u7f51\u94f6\u7eaf\u501f\u8bb0\u5361-\u524d\u53f0\u901a\u77e5" },\
{"channelNo":"30508", "transType":"pay", "refInterface":"com.ielpm.pay.web.cmbc.service.facade.CMBCWebPayService4d", "refId":"cmbcWebPayService4dH5", "method":"pay", "desc":"\u6c11\u751fH5-\u652f\u4ed8" },\
{"channelNo":"30508", "transType":"notify", "refInterface":"com.ielpm.pay.web.cmbc.service.facade.CMBCWebPayService4d", "refId":"cmbcWebPayService4dH5", "method":"notify", "desc":"\u6c11\u751fH5-\u540e\u53f0\u901a\u77e5" },\
{"channelNo":"30508", "transType":"callback", "refInterface":"com.ielpm.pay.web.cmbc.service.facade.CMBCWebPayService4d", "refId":"cmbcWebPayService4dH5", "method":"callback", "desc":"\u6c11\u751fH5-\u524d\u53f0\u901a\u77e5" },\
{"channelNo":"30508", "transType":"query", "refInterface":"com.ielpm.pay.web.cmbc.service.facade.CMBCWebPayService4d", "refId":"cmbcWebPayService4dH5", "method":"query", "desc":"\u6c11\u751fH5-\u67e5\u8be2" },\
{"channelNo":"30508", "transType":"refund", "refInterface":"com.ielpm.pay.web.cmbc.service.facade.CMBCWebPayService4d", "refId":"cmbcWebPayService4dH5", "method":"refund", "desc":"\u6c11\u751fH5-\u9000\u6b3e" },\
{"channelNo":"ys003", "transType":"pay", "refInterface":"com.ielpm.pay.web.ys.service.facade.YSWebPayService4d", "refId":"ysWebPayService4d", "method":"pay", "desc":"\u94f6\u76db\u7f51\u5173-\u652f\u4ed8" },\
{"channelNo":"ys003", "transType":"notify", "refInterface":"com.ielpm.pay.web.ys.service.facade.YSWebPayService4d", "refId":"ysWebPayService4d", "method":"notify", "desc":"\u94f6\u76db\u7f51\u5173-\u540e\u53f0\u901a\u77e5" },\
{"channelNo":"ys003", "transType":"callback", "refInterface":"com.ielpm.pay.web.ys.service.facade.YSWebPayService4d", "refId":"ysWebPayService4d", "method":"callback", "desc":"\u94f6\u76db\u7f51\u5173-\u524d\u53f0\u901a\u77e5" },\
{"channelNo":"ys003", "transType":"query", "refInterface":"com.ielpm.pay.web.ys.service.facade.YSWebPayService4d", "refId":"ysWebPayService4d", "method":"query", "desc":"\u94f6\u76db\u7f51\u5173-\u67e5\u8be2" },\
{"channelNo":"ys003", "transType":"refund", "refInterface":"com.ielpm.pay.web.ys.service.facade.YSWebPayService4d", "refId":"ysWebPayService4d", "method":"refund", "desc":"\u94f6\u76db\u7f51\u5173-\u9000\u6b3e" },\
{"channelNo":"ttf01", "transType":"pay", "refInterface":"com.ielpm.pay.web.ttf.service.facade.TTFWebPayService4d", "refId":"ttfWebPayService4d", "method":"pay", "desc":"\u7edf\u7edf\u4ed8\u7f51\u5173-\u652f\u4ed8" },\
{"channelNo":"ttf01", "transType":"notify", "refInterface":"com.ielpm.pay.web.ttf.service.facade.TTFWebPayService4d", "refId":"ttfWebPayService4d", "method":"notify", "desc":"\u7edf\u7edf\u4ed8\u7f51\u5173-\u540e\u53f0\u901a\u77e5" },\
{"channelNo":"ttf01", "transType":"callback", "refInterface":"com.ielpm.pay.web.ttf.service.facade.TTFWebPayService4d", "refId":"ttfWebPayService4d", "method":"callback", "desc":"\u7edf\u7edf\u4ed8\u7f51\u5173-\u524d\u53f0\u901a\u77e5" },\
{"channelNo":"ttf01", "transType":"query", "refInterface":"com.ielpm.pay.web.ttf.service.facade.TTFWebPayService4d", "refId":"ttfWebPayService4d", "method":"query", "desc":"\u7edf\u7edf\u4ed8\u7f51\u5173-\u67e5\u8be2" },\
{"channelNo":"ttf01", "transType":"refund", "refInterface":"com.ielpm.pay.web.ttf.service.facade.TTFWebPayService4d", "refId":"ttfWebPayService4d", "method":"refund", "desc":"\u7edf\u7edf\u4ed8\u7f51\u5173-\u9000\u6b3e" },\
{"channelNo":"ldx01", "transType":"pay", "refInterface":"com.ielpm.pay.web.cecu.service.facade.CECUWebPayService4d", "refId":"cecuWebPayService4d", "method":"pay", "desc":"\u8054\u52a8\u4fe1\u7f51\u7f51\u5173-\u652f\u4ed8" },\
{"channelNo":"ldx01", "transType":"notify", "refInterface":"com.ielpm.pay.web.cecu.service.facade.CECUWebPayService4d", "refId":"cecuWebPayService4d", "method":"notify", "desc":"\u8054\u52a8\u4fe1\u7f51\u7f51\u5173-\u540e\u53f0\u901a\u77e5" },\
{"channelNo":"ldx01", "transType":"callback", "refInterface":"com.ielpm.pay.web.cecu.service.facade.CECUWebPayService4d", "refId":"cecuWebPayService4d", "method":"callback", "desc":"\u8054\u52a8\u4fe1\u7f51\u7f51\u5173-\u524d\u53f0\u901a\u77e5" },\
{"channelNo":"ldx01", "transType":"query", "refInterface":"com.ielpm.pay.web.cecu.service.facade.CECUWebPayService4d", "refId":"cecuWebPayService4d", "method":"query", "desc":"\u8054\u52a8\u4fe1\u7f51\u7f51\u5173-\u67e5\u8be2" },\
{"channelNo":"ldx01", "transType":"refund", "refInterface":"com.ielpm.pay.web.cecu.service.facade.CECUWebPayService4d", "refId":"cecuWebPayService4d", "method":"refund", "desc":"\u8054\u52a8\u4fe1\u7f51\u7f51\u5173-\u9000\u6b3e" },\
{"channelNo":"qq001", "transType":"pay", "refInterface":"com.ielpm.pay.web.qq.service.facade.QQWebPayService4d", "refId":"qqWebPayService4d", "method":"pay", "desc":"97\u60e0\u8d22\u4ed8\u901a\u7f51\u5173-\u652f\u4ed8" },\
{"channelNo":"qq001", "transType":"notify", "refInterface":"com.ielpm.pay.web.qq.service.facade.QQWebPayService4d", "refId":"qqWebPayService4d", "method":"notify", "desc":"97\u60e0\u8d22\u4ed8\u901a\u7f51\u5173-\u540e\u53f0\u901a\u77e5" },\
{"channelNo":"qq001", "transType":"callback", "refInterface":"com.ielpm.pay.web.qq.service.facade.QQWebPayService4d", "refId":"qqWebPayService4d", "method":"callback", "desc":"97\u60e0\u8d22\u4ed8\u901a\u7f51\u5173-\u524d\u53f0\u901a\u77e5" },\
{"channelNo":"qq001", "transType":"query", "refInterface":"com.ielpm.pay.web.qq.service.facade.QQWebPayService4d", "refId":"qqWebPayService4d", "method":"query", "desc":"97\u60e0\u8d22\u4ed8\u901a\u7f51\u5173-\u67e5\u8be2" },\
{"channelNo":"qq001", "transType":"refund", "refInterface":"com.ielpm.pay.web.qq.service.facade.QQWebPayService4d", "refId":"qqWebPayService4d", "method":"refund", "desc":"97\u60e0\u8d22\u4ed8\u901a\u7f51\u5173-\u9000\u6b3e" },\
{"channelNo":"hxt01,hxt02,hxt03", "transType":"pay", "refInterface":"com.ielpm.pay.web.hxt.service.facade.HxtWebPayService4d", "refId":"hxtWebPayService4d", "method":"pay", "desc":"\u6052\u4fe1\u901a\u7f51\u5173(b2c)-\u652f\u4ed8" },\
{"channelNo":"hxt01,hxt02,hxt03", "transType":"notify", "refInterface":"com.ielpm.pay.web.hxt.service.facade.HxtWebPayService4d", "refId":"hxtWebPayService4d", "method":"notify", "desc":"\u6052\u4fe1\u901a\u7f51\u5173(b2c)-\u540e\u53f0\u901a\u77e5" },\
{"channelNo":"hxt01,hxt02,hxt03", "transType":"callback", "refInterface":"com.ielpm.pay.web.hxt.service.facade.HxtWebPayService4d", "refId":"hxtWebPayService4d", "method":"callback", "desc":"\u6052\u4fe1\u901a\u7f51\u5173(b2c)-\u524d\u53f0\u901a\u77e5" },\
{"channelNo":"hxt01,hxt02,hxt03", "transType":"query", "refInterface":"com.ielpm.pay.web.hxt.service.facade.HxtWebPayService4d", "refId":"hxtWebPayService4d", "method":"query", "desc":"\u6052\u4fe1\u901a(b2c)-\u67e5\u8be2" },\
{"channelNo":"hxt01,hxt02,hxt03", "transType":"refund", "refInterface":"com.ielpm.pay.web.hxt.service.facade.HxtWebPayService4d", "refId":"hxtWebPayService4d", "method":"refund", "desc":"\u6052\u4fe1\u901a(b2c)-\u9000\u6b3e" },\
{"channelNo":"hj01,hj02", "transType":"pay", "refInterface":"com.ielpm.pay.web.hj.service.facade.HjWebPayService4d", "refId":"hjWebPayService4d", "method":"pay", "desc":"\u6c47\u805a\u7f51\u5173-\u652f\u4ed8" },\
{"channelNo":"hj01,hj02", "transType":"notify", "refInterface":"com.ielpm.pay.web.hj.service.facade.HjWebPayService4d", "refId":"hjWebPayService4d", "method":"notify", "desc":"\u6c47\u805a\u7f51\u5173-\u540e\u53f0\u901a\u77e5" },\
{"channelNo":"hj01,hj02", "transType":"callback", "refInterface":"com.ielpm.pay.web.hj.service.facade.HjWebPayService4d", "refId":"hjWebPayService4d", "method":"callback", "desc":"\u6c47\u805a\u7f51\u5173-\u524d\u53f0\u901a\u77e5" },\
{"channelNo":"hj01,hj02", "transType":"query", "refInterface":"com.ielpm.pay.web.hj.service.facade.HjWebPayService4d", "refId":"hjWebPayService4d", "method":"query", "desc":"\u6c47\u805a\u7f51\u5173-\u67e5\u8be2" },\
{"channelNo":"hj01,hj02", "transType":"refund", "refInterface":"com.ielpm.pay.web.hj.service.facade.HjWebPayService4d", "refId":"hjWebPayService4d", "method":"refund", "desc":"\u6c47\u805a\u7f51\u5173-\u9000\u6b3e" }]




2,读取.properties文件:
package com.buybal.mgr.util;
import java.io.FileReader;
import java.util.Map;
import org.apache.log4j.Logger;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;


public class JsonUtil {
private final static Logger logger = Logger.getLogger(JsonUtil.class);
public static String getDataFromJsonFile(String dirPath,String jsonFileName)
 {
//实例化解析json的对象
        JsonParser jp=new JsonParser();
        //解析文件后得到json元素,将元素转为json对象
        JsonObject jo = null;
        if ((dirPath == null) || ("".equals(dirPath)))
        {
          logger.error("getDataFromJsonFile dirPath is null");
          return null;
        }
        if ((jsonFileName == null) || ("".equals(jsonFileName)))
        {
          logger.error("getDataFromJsonFile jsonFileName is null");
          return null;
        }
try {
            //json文件存放路径
            String jsonFilePath = dirPath+jsonFileName+".json";
            logger.debug("json文件存放路径为:"+jsonFilePath);
jo = (JsonObject) jp.parse(new FileReader(jsonFilePath));
if(jo != null){
logger.debug("读取到的json文件内容为:"+jo.toString());
}
} catch (Exception e) {
e.printStackTrace();
}
return jo!=null? jo.toString() : "";
 }
  
 public static void main(String[] args) throws Exception
 {
 //实例化解析json的对象
       JsonParser jp=new JsonParser();
       //解析文件后得到json元素,将元素转为json对象
       JsonObject jo = null;
jo = (JsonObject) jp.parse(new FileReader("E:/mccCode.json"));
       @SuppressWarnings("unchecked")
Map<String,String> strMap  = com.buybal.util.JsonUtil.jsonToMap(jo.toString());
       System.out.println(strMap);
 }
}


mccCode.json文件
{
"8031":"正骨医生",
"8041":"按摩医生",
"8042":"眼科医生",
"8043":"光学产品、眼镜店",
"8049":"手足病医生",
"8021":"牙科医生"                                                         
}






一般读取.properties文件方法:
import java.util.ResourceBundle;


private static final String KEY = "jkurl";
ResourceBundle ap = ResourceBundle.getBundle("route");
String jkurlContent = ap.getString(KEY);
      
route.properties内容:
jkurl=http://10.9.12.3:10087/quickcmbc/CMBC/query


      
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值