spring cloud基础知识点

Thread.currentThread().getContex

2019-02-28  本文已影响0人  WAHAHA402

在使用Property和InputStream、OutputStream读取配置文件时,使用try/catch捕获IO异常时,发现下面的代码

FileOutputStream fileOutputStream = null;
        JSONObject object = new JSONObject();
        try (InputStream inputStream = TestController.class.getResourceAsStream("application-dev.properties")){
            URL url = TestController.class.getClassLoader().getResource("application-dev.properties");
            fileOutputStream = new FileOutputStream(url.getPath());

            Properties properties = new Properties();
            if (!Objects.isNull(inputStream)){
                properties.load(inputStream);
            }
            properties.setProperty("writeProperty3", "you made it!");
            properties.store(fileOutputStream, "写入属性");


        } finally {
//            inputStream.close();
            fileOutputStream.close();
        }

try()里面的inputstream资源通过当前类.class.getResoureAsStream("xx")时无法获取,而通过Thread.currentThread().getContextClassLoader().getResoureAsStream("xx")可以获取,有关解释是如果你使用当前类.class.getClassLoader(),可能会导致和当前线程所运行的类加载器不一致。
有时间再深入探究下,先记录下来。
参考链接

上一篇下一篇

猜你喜欢

热点阅读