| | |
| | | import com.alibaba.druid.util.Utils; |
| | | import com.gkhy.hazmat.common.enums.DataSourceType; |
| | | import com.gkhy.hazmat.framework.config.properties.DruidProperties; |
| | | import com.gkhy.hazmat.framework.config.properties.ShardingProperties; |
| | | import org.apache.shardingsphere.driver.api.yaml.YamlShardingSphereDataSourceFactory; |
| | | import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; |
| | | import org.springframework.boot.context.properties.ConfigurationProperties; |
| | | import org.springframework.boot.web.servlet.FilterRegistrationBean; |
| | | import org.springframework.context.annotation.Bean; |
| | | import org.springframework.context.annotation.Configuration; |
| | | import org.springframework.context.annotation.Primary; |
| | | import org.springframework.core.io.ClassPathResource; |
| | | |
| | | import javax.servlet.*; |
| | | import javax.sql.DataSource; |
| | | import java.io.File; |
| | | import java.io.IOException; |
| | | import java.io.InputStream; |
| | | import java.nio.file.Files; |
| | | import java.nio.file.StandardCopyOption; |
| | | import java.util.HashMap; |
| | | import java.util.Map; |
| | | |
| | |
| | | DruidDataSource dataSource=DruidDataSourceBuilder.create().build(); |
| | | return druidProperties.dataSource(dataSource); |
| | | } |
| | | |
| | | @Bean |
| | | public DataSource shardingDataSource(ShardingProperties shardingProperties) throws Exception |
| | | { |
| | | ClassPathResource classPathResource = new ClassPathResource(shardingProperties.getConfigLocation()); |
| | | InputStream inputStream = classPathResource.getInputStream(); |
| | | File tmpFile = File.createTempFile(shardingProperties.getConfigLocation(), ".tmp"); |
| | | Files.copy(inputStream, tmpFile.toPath(), StandardCopyOption.REPLACE_EXISTING); |
| | | DataSource dataSource = YamlShardingSphereDataSourceFactory.createDataSource(tmpFile); |
| | | return dataSource; |
| | | } |
| | | |
| | | |
| | | @Bean(name="dynamicDataSource") |
| | |
| | | public DynamicDataSource dataSource(DataSource masterDataSource){ |
| | | Map<Object,Object> targetDataSources=new HashMap<>(); |
| | | targetDataSources.put(DataSourceType.MASTER.name(),masterDataSource); |
| | | setDataSource(targetDataSources,DataSourceType.SLAVE.name(),"slaveDataSource"); |
| | | // setDataSource(targetDataSources,DataSourceType.SLAVE.name(),"slaveDataSource"); |
| | | setDataSource(targetDataSources, DataSourceType.SHARDING.name(), "shardingDataSource"); |
| | | return new DynamicDataSource(masterDataSource,targetDataSources); |
| | | } |
| | | |