美文网首页
SpringBoot读取Jar包中resources下的资源文件

SpringBoot读取Jar包中resources下的资源文件

作者: 李2牛 | 来源:发表于2018-08-15 17:13 被阅读0次

上代码

import com.example.vo.TestEnvVo;
import org.springframework.core.io.DefaultResourceLoader;
import org.springframework.core.io.Resource;
import org.springframework.core.io.ResourceLoader;
import org.yaml.snakeyaml.Yaml;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
/**
 * @author Kent Lee
 * @description 解析测试环境的配置文件,由于项目会打包成jar所以需要注入ResourceLoader
 * @create 2018-08-03 17:16
 * @contact kent1411390610@gmail.com
 **/
public class EnvResolver {
    private ResourceLoader resourceLoader;
    public EnvResolver(){
        resourceLoader = new DefaultResourceLoader();
    }
    public List GetEnvConfig() throws IOException {
        Yaml yaml = new Yaml();
        Resource resource = resourceLoader.getResource("classpath:test-environment.yml");
        System.out.println("文件名称: " + resource.getFilename());
        InputStream inputStream = resource.getInputStream();
        Map<String, Map<String, String>> result = yaml.load(inputStream);
        List<TestEnvVo> envList = new ArrayList<>();
        for (String key : result.keySet()) {
            TestEnvVo testEnvVo = new TestEnvVo();
            testEnvVo.setEnvName(result.get(key).get("name"));
            testEnvVo.setDomain(result.get(key).get("domain"));
            envList.add(testEnvVo);
        }
        inputStream.close();
        return envList;
    }
}

由于程序需要封装成jar所以,不能使用File类(jar内不适用)。好在Spring为我们提供了Resource等相关接口,通过这些接口我们能轻松获取jar文件中的文件资源。
参考:java-load-file-from-classpath-in-spring-boot

相关文章

网友评论

      本文标题:SpringBoot读取Jar包中resources下的资源文件

      本文链接:https://www.haomeiwen.com/subject/vubwbftx.html