上代码
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
网友评论