Repository: apache/shardingsphere
Issue: 可执行jar发布，用YamlShardingDataSource时报错

Please answer these questions before submitting your issue. Thanks!

### Which version of Sharding-Jdbc do you using?
1.5.0.M3

### Expected behavior
我用可执行jar的方式发布，用YamlShardingDataSource生成datasource

### Actual behavior
报错： class path resource [xx.yml] cannot be resolved to absolute file path because it does not reside in the file system: jar:file:/xx.jar!/BOOT-INF/classes!/xx.yml

### Steps to reproduce the behavior
YamlShardingDataSource的入参是java.io.File。我用可执行jar的方式发布，获取不到File，但是可以获取到InputStream，原因见：
https://stackoverflow.com/questions/25869428/classpath-resource-not-found-when-running-as-jar
希望能提供java.io.Inputsream的入参而不仅仅是java.io.File入参
### Please provide the reproduce example codes (such as github link) if possible.


Changed files:
sharding-jdbc-config-parent/sharding-jdbc-config-yaml/src/main/java/com/dangdang/ddframe/rdb/sharding/config/yaml/api/YamlShardingDataSource.java

diff --git a/sharding-jdbc-config-parent/sharding-jdbc-config-yaml/src/main/java/com/dangdang/ddframe/rdb/sharding/config/yaml/api/YamlShardingDataSource.java b/sharding-jdbc-config-parent/sharding-jdbc-config-yaml/src/main/java/com/dangdang/ddframe/rdb/sharding/config/yaml/api/YamlShardingDataSource.java
index e35f97388d8..55ac5ef49f4 100644
--- a/sharding-jdbc-config-parent/sharding-jdbc-config-yaml/src/main/java/com/dangdang/ddframe/rdb/sharding/config/yaml/api/YamlShardingDataSource.java
+++ b/sharding-jdbc-config-parent/sharding-jdbc-config-yaml/src/main/java/com/dangdang/ddframe/rdb/sharding/config/yaml/api/YamlShardingDataSource.java
@@ -27,7 +27,7 @@ import javax.sql.DataSource;
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.IOException;
-import java.io.InputStreamReader;
+import java.io.InputStream;
 import java.util.Map;
 
 /**
@@ -36,21 +36,28 @@ import java.util.Map;
  * @author gaohongtao
  */
 public class YamlShardingDataSource extends ShardingDataSource {
-    
+
     public YamlShardingDataSource(final File yamlFile) throws IOException {
         super(new ShardingRuleBuilder(yamlFile.getName(), unmarshal(yamlFile)).build(), unmarshal(yamlFile).getProps());
     }
-    
+
     public YamlShardingDataSource(final Map<String, DataSource> dataSource, final File yamlFile) throws IOException {
         super(new ShardingRuleBuilder(yamlFile.getName(), dataSource, unmarshal(yamlFile)).build(), unmarshal(yamlFile).getProps());
     }
-    
+
+    public YamlShardingDataSource(String logroot, final InputStream inputStream) throws IOException {
+        super(new ShardingRuleBuilder(logroot, unmarshal(inputStream)).build(), unmarshal(inputStream).getProps());
+    }
+
     private static YamlConfig unmarshal(final File yamlFile) throws IOException {
         try (
                 FileInputStream fileInputStream = new FileInputStream(yamlFile);
-                InputStreamReader inputStreamReader = new InputStreamReader(fileInputStream, "UTF-8")
             ) {
-            return new Yaml(new Constructor(YamlConfig.class)).loadAs(inputStreamReader, YamlConfig.class);
+            return unmarshal(fileInputStream);
         }
     }
+
+    private static YamlConfig unmarshal(final InputStream inputStream) throws IOException {
+        return new Yaml(new Constructor(YamlConfig.class)).loadAs(inputStream, YamlConfig.class);
+    }
 }