美文网首页
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