spring 加载jar包中的配置文件

 

 

package com.xxx.ssptsppt.dataexchange.utils;

import com.xxx.maybee.engine.utils.FileUtil;
import com.xxx.maybee.engine.utils.PubString;
import org.springframework.core.io.Resource;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import org.springframework.core.io.support.ResourcePatternResolver;

import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.util.HashMap;
import java.util.Map;


public class Confs {
    private static Map<String, File> confFiles;

    static {
        confFiles = new HashMap<>();
        String tmpDir = "tmpconf/";
        ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
        try {
            Resource[] resources = resolver.getResources("/*.json");
            for (Resource resource : resources) {
                String confName = resource.getFilename();
                InputStream confIs = resource.getInputStream();
                File confFile = extractFile(confName, confIs, tmpDir);
                confFiles.put(confName, confFile);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    private static File extractFile(String confName, InputStream confIs, String tmpDir) {
        File tmpConfDir = new File(tmpDir);
        if (!tmpConfDir.exists()) {
            boolean mkdirs = tmpConfDir.mkdirs();
            if (!mkdirs) {
                throw new RuntimeException("临时配置文件无法创建!");
            }
        }

        File confFilePath = new File(tmpConfDir, confName);
        try {
            FileUtil.saveToFile(confIs, confFilePath, true, false);
        } catch (IOException e) {
            FileUtil.delFolder(tmpDir);
            throw new RuntimeException("配置文件提取失败!");
        }

        return confFilePath;
    }

    public static File getConf(String confFileName) {
        if (PubString.isNullOrSpace(confFileName)) {
            return null;
        }
        return confFiles.get(confFileName);
    }
}

  

posted @ 2018-08-14 13:58  GordonDicaprio  阅读(2369)  评论(0编辑  收藏  举报