old mode 100644
new mode 100755
| | |
| | | package com.java110.db; |
| | | |
| | | import org.apache.shardingsphere.shardingjdbc.api.yaml.YamlMasterSlaveDataSourceFactory; |
| | | import org.apache.shardingsphere.shardingjdbc.api.yaml.YamlShardingDataSourceFactory; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.context.annotation.Bean; |
| | | import org.springframework.context.annotation.Configuration; |
| | | import org.springframework.core.env.Environment; |
| | | import org.springframework.core.io.ClassPathResource; |
| | | import org.springframework.core.io.Resource; |
| | | |
| | | import javax.servlet.Filter; |
| | | import javax.sql.DataSource; |
| | | import java.io.File; |
| | | import java.io.FileNotFoundException; |
| | | import java.io.IOException; |
| | | import java.io.UnsupportedEncodingException; |
| | | import java.io.*; |
| | | import java.sql.SQLException; |
| | | |
| | | /** |
| | |
| | | //@Autowired |
| | | private Filter statFilter; |
| | | |
| | | @Autowired |
| | | private Environment env; |
| | | private static final String SHARDING_YML_PATH = "dataSource.yml"; |
| | | |
| | | /** |
| | |
| | | */ |
| | | @Bean |
| | | public DataSource dataSource() throws SQLException, IOException { |
| | | // YamlShardingConfiguration config = parse(); |
| | | // YamlShardingRuleConfiguration rule = config.getShardingRule(); |
| | | // for (String key : config.getDataSources().keySet()) { |
| | | // DruidDataSource d = (DruidDataSource) config.getDataSources().get(key); |
| | | // d.setProxyFilters(Lists.newArrayList(statFilter)); |
| | | // } |
| | | // return ShardingDataSourceFactory.createDataSource(config.getDataSources(), |
| | | // rule.getShardingRuleConfiguration(), config.getConfigMap(), config.getProps()); |
| | | String path = SHARDING_YML_PATH; |
| | | |
| | | return YamlShardingDataSourceFactory.createDataSource(getYmlFile()); |
| | | String[] actives = env.getActiveProfiles(); |
| | | if (actives != null && actives.length > 0 && !"dev".equals(actives[0])) { |
| | | path = "dataSource-" + actives[0] + ".yml"; |
| | | } |
| | | |
| | | String configString = new String(getYmlFile(path), "UTF-8"); |
| | | configString = configString.replaceAll("\\$\\{mysqlpwd\\}", env.getProperty("mysqlpwd")); |
| | | |
| | | return YamlShardingDataSourceFactory.createDataSource(configString.getBytes("UTF-8")); |
| | | } |
| | | |
| | | /** |
| | |
| | | * @throws FileNotFoundException 文件未发现异常 |
| | | * @throws UnsupportedEncodingException 不支持编码异常 |
| | | */ |
| | | private File getYmlFile() throws IOException { |
| | | Resource certResource = new ClassPathResource(SHARDING_YML_PATH); |
| | | return certResource.getFile(); |
| | | private byte[] getYmlFile(String path) throws IOException { |
| | | Reader reader = null; |
| | | InputStream inputStream = null; |
| | | ByteArrayOutputStream swapStream = null; |
| | | try { |
| | | Resource resource = new ClassPathResource(path); |
| | | |
| | | inputStream = resource.getInputStream(); |
| | | swapStream = new ByteArrayOutputStream(); |
| | | byte[] buff = new byte[100]; |
| | | int rc = 0; |
| | | while ((rc = inputStream.read(buff, 0, 100)) > 0) { |
| | | swapStream.write(buff, 0, rc); |
| | | } |
| | | byte[] in2b = swapStream.toByteArray(); |
| | | return in2b; |
| | | } finally { |
| | | if (inputStream != null) { |
| | | inputStream.close(); |
| | | } |
| | | if (swapStream != null) { |
| | | swapStream.close(); |
| | | } |
| | | } |
| | | } |
| | | } |