|
@@ -10,6 +10,7 @@ import org.mybatis.spring.annotation.MapperScan;
|
|
|
import org.springframework.beans.factory.annotation.Qualifier;
|
|
|
import org.springframework.beans.factory.annotation.Value;
|
|
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
|
|
|
+import org.springframework.boot.jdbc.DataSourceBuilder;
|
|
|
import org.springframework.context.annotation.Bean;
|
|
|
import org.springframework.context.annotation.Configuration;
|
|
|
import org.springframework.context.annotation.PropertySource;
|
|
@@ -19,7 +20,8 @@ import javax.annotation.PostConstruct;
|
|
|
import javax.sql.DataSource;
|
|
|
|
|
|
@Configuration
|
|
|
-@MapperScan(basePackages = "io.github.pnoker.gateway.dbdao.mapper", sqlSessionTemplateRef = "mainSqlSessionTemplate")
|
|
|
+@MapperScan(basePackages = {"io.github.pnoker.gateway.dbdao.mapper",
|
|
|
+"io.github.pnoker.gateway.dbdao.tangyinSource.mapper"}, sqlSessionTemplateRef = "mainSqlSessionTemplate")
|
|
|
public class MainSourceConfiguration {
|
|
|
@Value("${spring.datasource.driver-class-name:}")
|
|
|
private String driveClass = "org.postgresql.Driver";
|
|
@@ -101,12 +103,338 @@ public class MainSourceConfiguration {
|
|
|
public DataSourceTransactionManager mainDbTransactionManager(@Qualifier("mainDatasource") DataSource dataSource){
|
|
|
return new DataSourceTransactionManager(dataSource);
|
|
|
}
|
|
|
-
|
|
|
@PostConstruct
|
|
|
public void init(){
|
|
|
GlobalData.getInstance().setPostGisValid("org.postgis.DriverWrapper".equals(driveClass));
|
|
|
}
|
|
|
|
|
|
+ //TODO child数据源
|
|
|
+ @Value("${spring.datasource.childpg.driver-class-name:}")
|
|
|
+ private String driveClass1 = "org.postgresql.Driver";
|
|
|
+
|
|
|
+ @Value("${spring.datasource.childpg.jdbc-url:}")
|
|
|
+ private String url1 = "";
|
|
|
+
|
|
|
+ @Value("${spring.datasource.childpg.username:}")
|
|
|
+ private String username1 = "";
|
|
|
+
|
|
|
+ @Value("${spring.datasource.childpg.password:}")
|
|
|
+ private String password1 = "";
|
|
|
+
|
|
|
+ @Value("${spring.datasource.data.maximum-pool-size:200}")
|
|
|
+ private Integer maxPoolSize1;
|
|
|
+
|
|
|
+ @Value("${spring.datasource.data.minimum-idle:1}")
|
|
|
+ private Integer minIdle1;
|
|
|
+
|
|
|
+ @Value("${spring.datasource.data.connection-test-query:}")
|
|
|
+ private String connectionTestQuery1;
|
|
|
+
|
|
|
+ @Value("${spring.datasource.data.max-lifetime:120000}")
|
|
|
+ private Long maxLifetime1;
|
|
|
+ @Value("${spring.datasource.data.idle-timeout:30000}")
|
|
|
+ private Long idleTimeout1;
|
|
|
+
|
|
|
+ @Value("${spring.datasource.data.connection-timeout:30000}")
|
|
|
+ private Long connectionTimeout1;
|
|
|
+
|
|
|
+ @Value("${spring.datasource.data.validation-timeout:30000}")
|
|
|
+ private Long validTimeout1;
|
|
|
+
|
|
|
+ @Bean(name = "childDatasource")
|
|
|
+ //@ConfigurationProperties(prefix = "spring.datasource.data")
|
|
|
+ public DataSource childDatasource() {
|
|
|
+ return new HikariDataSource(getConfig1());
|
|
|
+// return DataSourceBuilder.create().build();
|
|
|
+ //Spring Boot 2.x默认使用HikariCP
|
|
|
+ }
|
|
|
+
|
|
|
+ private HikariConfig getConfig1() {
|
|
|
+ HikariConfig hikariConfig = new HikariConfig();
|
|
|
+ hikariConfig.setDriverClassName(driveClass1);
|
|
|
+ hikariConfig.setJdbcUrl(url1);
|
|
|
+ hikariConfig.setUsername(username1);
|
|
|
+ hikariConfig.setPassword(password1);
|
|
|
+
|
|
|
+ hikariConfig.setMaximumPoolSize(maxPoolSize1);
|
|
|
+ hikariConfig.setMinimumIdle(minIdle1);
|
|
|
+ hikariConfig.setConnectionTestQuery(connectionTestQuery1);
|
|
|
+ hikariConfig.setMaxLifetime(maxLifetime1);
|
|
|
+ hikariConfig.setIdleTimeout(idleTimeout1);
|
|
|
+ hikariConfig.setConnectionTimeout(connectionTimeout1);
|
|
|
+ hikariConfig.setValidationTimeout(validTimeout1);
|
|
|
+ return hikariConfig;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Bean("childSqlSessionFactory")
|
|
|
+ public SqlSessionFactory childSqlSessionFactoryBean(@Qualifier("childDatasource") DataSource dataSource) throws Exception {
|
|
|
+ SqlSessionFactoryBean sessionFactoryBean = new SqlSessionFactoryBean();
|
|
|
+ sessionFactoryBean.setDataSource(dataSource);
|
|
|
+
|
|
|
+ org.apache.ibatis.session.Configuration configuration = new org.apache.ibatis.session.Configuration();
|
|
|
+ configuration.setCallSettersOnNulls(true); //数据库中字段值为null时也要求返回
|
|
|
+ configuration.setMapUnderscoreToCamelCase(true); //开启驼峰映射
|
|
|
+ configuration.setCacheEnabled(false);
|
|
|
+ sessionFactoryBean.setConfiguration(configuration);
|
|
|
+ return sessionFactoryBean.getObject();
|
|
|
+ }
|
|
|
+
|
|
|
+ @Bean("childSqlSessionTemplate")
|
|
|
+ public SqlSessionTemplate childSqlSessionTemplate(@Qualifier("childSqlSessionFactory") SqlSessionFactory sessionFactory) {
|
|
|
+ return new SqlSessionTemplate(sessionFactory);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Bean(name = "childDbTransactionManager")
|
|
|
+ public DataSourceTransactionManager childDbTransactionManager(@Qualifier("childDatasource") DataSource dataSource){
|
|
|
+ return new DataSourceTransactionManager(dataSource);
|
|
|
+ }
|
|
|
+
|
|
|
+ //TODO child2数据源
|
|
|
+ @Value("${spring.datasource.child2pg.driver-class-name:}")
|
|
|
+ private String driveClass2 = "org.postgresql.Driver";
|
|
|
+
|
|
|
+ @Value("${spring.datasource.child2pg.jdbc-url:}")
|
|
|
+ private String url2 = "";
|
|
|
+
|
|
|
+ @Value("${spring.datasource.child2pg.username:}")
|
|
|
+ private String username2 = "";
|
|
|
+
|
|
|
+ @Value("${spring.datasource.child2pg.password:}")
|
|
|
+ private String password2 = "";
|
|
|
+
|
|
|
+ @Value("${spring.datasource.data.maximum-pool-size:200}")
|
|
|
+ private Integer maxPoolSize2;
|
|
|
+
|
|
|
+ @Value("${spring.datasource.data.minimum-idle:1}")
|
|
|
+ private Integer minIdle2;
|
|
|
+
|
|
|
+ @Value("${spring.datasource.data.connection-test-query:}")
|
|
|
+ private String connectionTestQuery2;
|
|
|
+
|
|
|
+ @Value("${spring.datasource.data.max-lifetime:120000}")
|
|
|
+ private Long maxLifetime2;
|
|
|
+
|
|
|
+ @Value("${spring.datasource.data.idle-timeout:30000}")
|
|
|
+ private Long idleTimeout2;
|
|
|
+
|
|
|
+ @Value("${spring.datasource.data.connection-timeout:30000}")
|
|
|
+ private Long connectionTimeout2;
|
|
|
+
|
|
|
+ @Value("${spring.datasource.data.validation-timeout:30000}")
|
|
|
+ private Long validTimeout2;
|
|
|
+
|
|
|
+ @Bean(name = "child2Datasource")
|
|
|
+ //@ConfigurationProperties(prefix = "spring.datasource.data")
|
|
|
+ public DataSource child2Datasource() {
|
|
|
+// return new HikariDataSource(getConfig2());
|
|
|
+ return DataSourceBuilder.create().build();
|
|
|
+ //Spring Boot 2.x默认使用HikariCP
|
|
|
+ }
|
|
|
+
|
|
|
+ private HikariConfig getConfig2() {
|
|
|
+ HikariConfig hikariConfig = new HikariConfig();
|
|
|
+ hikariConfig.setDriverClassName(driveClass2);
|
|
|
+ hikariConfig.setJdbcUrl(url2);
|
|
|
+ hikariConfig.setUsername(username2);
|
|
|
+ hikariConfig.setPassword(password2);
|
|
|
+
|
|
|
+ hikariConfig.setMaximumPoolSize(maxPoolSize2);
|
|
|
+ hikariConfig.setMinimumIdle(minIdle2);
|
|
|
+ hikariConfig.setConnectionTestQuery(connectionTestQuery2);
|
|
|
+ hikariConfig.setMaxLifetime(maxLifetime2);
|
|
|
+ hikariConfig.setIdleTimeout(idleTimeout2);
|
|
|
+ hikariConfig.setConnectionTimeout(connectionTimeout2);
|
|
|
+ hikariConfig.setValidationTimeout(validTimeout2);
|
|
|
+ return hikariConfig;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Bean("child2SqlSessionFactory")
|
|
|
+ public SqlSessionFactory child2SqlSessionFactoryBean(@Qualifier("child2Datasource") DataSource dataSource) throws Exception {
|
|
|
+ SqlSessionFactoryBean sessionFactoryBean = new SqlSessionFactoryBean();
|
|
|
+ sessionFactoryBean.setDataSource(dataSource);
|
|
|
+
|
|
|
+ org.apache.ibatis.session.Configuration configuration = new org.apache.ibatis.session.Configuration();
|
|
|
+ configuration.setCallSettersOnNulls(true); //数据库中字段值为null时也要求返回
|
|
|
+ configuration.setMapUnderscoreToCamelCase(true); //开启驼峰映射
|
|
|
+ configuration.setCacheEnabled(false);
|
|
|
+ sessionFactoryBean.setConfiguration(configuration);
|
|
|
+ return sessionFactoryBean.getObject();
|
|
|
+ }
|
|
|
+
|
|
|
+ @Bean("child2SqlSessionTemplate")
|
|
|
+ public SqlSessionTemplate child2SqlSessionTemplate(@Qualifier("child2SqlSessionFactory") SqlSessionFactory sessionFactory) {
|
|
|
+ return new SqlSessionTemplate(sessionFactory);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Bean(name = "child2DbTransactionManager")
|
|
|
+ public DataSourceTransactionManager child2DbTransactionManager(@Qualifier("child2Datasource") DataSource dataSource){
|
|
|
+ return new DataSourceTransactionManager(dataSource);
|
|
|
+ }
|
|
|
+
|
|
|
+ //TODO child3数据源
|
|
|
+ @Value("${spring.datasource.child3pg.driver-class-name:}")
|
|
|
+ private String driveClass3 = "org.postgresql.Driver";
|
|
|
+
|
|
|
+ @Value("${spring.datasource.child3pg.jdbc-url:}")
|
|
|
+ private String url3 = "";
|
|
|
+
|
|
|
+ @Value("${spring.datasource.child3pg.username:}")
|
|
|
+ private String username3 = "";
|
|
|
+
|
|
|
+ @Value("${spring.datasource.child3pg.password:}")
|
|
|
+ private String password3 = "";
|
|
|
+
|
|
|
+ @Value("${spring.datasource.data.maximum-pool-size:200}")
|
|
|
+ private Integer maxPoolSize3;
|
|
|
+
|
|
|
+ @Value("${spring.datasource.data.minimum-idle:1}")
|
|
|
+ private Integer minIdle3;
|
|
|
+
|
|
|
+ @Value("${spring.datasource.data.connection-test-query:}")
|
|
|
+ private String connectionTestQuery3;
|
|
|
+
|
|
|
+ @Value("${spring.datasource.data.max-lifetime:120000}")
|
|
|
+ private Long maxLifetime3;
|
|
|
+
|
|
|
+ @Value("${spring.datasource.data.idle-timeout:30000}")
|
|
|
+ private Long idleTimeout3;
|
|
|
+
|
|
|
+ @Value("${spring.datasource.data.connection-timeout:30000}")
|
|
|
+ private Long connectionTimeout3;
|
|
|
+
|
|
|
+ @Value("${spring.datasource.data.validation-timeout:30000}")
|
|
|
+ private Long validTimeout3;
|
|
|
+
|
|
|
+ @Bean(name = "child3Datasource")
|
|
|
+ //@ConfigurationProperties(prefix = "spring.datasource.data")
|
|
|
+ public DataSource child3Datasource() {
|
|
|
+// return new HikariDataSource(getConfig3());
|
|
|
+ return DataSourceBuilder.create().build();
|
|
|
+ //Spring Boot 2.x默认使用HikariCP
|
|
|
+ }
|
|
|
+
|
|
|
+ private HikariConfig getConfig3() {
|
|
|
+ HikariConfig hikariConfig = new HikariConfig();
|
|
|
+ hikariConfig.setDriverClassName(driveClass3);
|
|
|
+ hikariConfig.setJdbcUrl(url3);
|
|
|
+ hikariConfig.setUsername(username3);
|
|
|
+ hikariConfig.setPassword(password3);
|
|
|
+
|
|
|
+ hikariConfig.setMaximumPoolSize(maxPoolSize3);
|
|
|
+ hikariConfig.setMinimumIdle(minIdle3);
|
|
|
+ hikariConfig.setConnectionTestQuery(connectionTestQuery3);
|
|
|
+ hikariConfig.setMaxLifetime(maxLifetime3);
|
|
|
+ hikariConfig.setIdleTimeout(idleTimeout3);
|
|
|
+ hikariConfig.setConnectionTimeout(connectionTimeout3);
|
|
|
+ hikariConfig.setValidationTimeout(validTimeout3);
|
|
|
+ return hikariConfig;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Bean("child3SqlSessionFactory")
|
|
|
+ public SqlSessionFactory child3SqlSessionFactoryBean(@Qualifier("child3Datasource") DataSource dataSource) throws Exception {
|
|
|
+ SqlSessionFactoryBean sessionFactoryBean = new SqlSessionFactoryBean();
|
|
|
+ sessionFactoryBean.setDataSource(dataSource);
|
|
|
+
|
|
|
+ org.apache.ibatis.session.Configuration configuration = new org.apache.ibatis.session.Configuration();
|
|
|
+ configuration.setCallSettersOnNulls(true); //数据库中字段值为null时也要求返回
|
|
|
+ configuration.setMapUnderscoreToCamelCase(true); //开启驼峰映射
|
|
|
+ configuration.setCacheEnabled(false);
|
|
|
+ sessionFactoryBean.setConfiguration(configuration);
|
|
|
+ return sessionFactoryBean.getObject();
|
|
|
+ }
|
|
|
+
|
|
|
+ @Bean("child3SqlSessionTemplate")
|
|
|
+ public SqlSessionTemplate child3SqlSessionTemplate(@Qualifier("child3SqlSessionFactory") SqlSessionFactory sessionFactory) {
|
|
|
+ return new SqlSessionTemplate(sessionFactory);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Bean(name = "child3DbTransactionManager")
|
|
|
+ public DataSourceTransactionManager child3DbTransactionManager(@Qualifier("child3Datasource") DataSource dataSource){
|
|
|
+ return new DataSourceTransactionManager(dataSource);
|
|
|
+ }
|
|
|
+
|
|
|
+ //TODO child4数据源
|
|
|
+ @Value("${spring.datasource.child4pg.driver-class-name:}")
|
|
|
+ private String driveClass4 = "org.postgresql.Driver";
|
|
|
+
|
|
|
+ @Value("${spring.datasource.child4pg.jdbc-url:}")
|
|
|
+ private String url4 = "";
|
|
|
+
|
|
|
+ @Value("${spring.datasource.child4pg.username:}")
|
|
|
+ private String username4 = "";
|
|
|
+
|
|
|
+ @Value("${spring.datasource.child4pg.password:}")
|
|
|
+ private String password4 = "";
|
|
|
+
|
|
|
+ @Value("${spring.datasource.data.maximum-pool-size:200}")
|
|
|
+ private Integer maxPoolSize4;
|
|
|
+
|
|
|
+ @Value("${spring.datasource.data.minimum-idle:1}")
|
|
|
+ private Integer minIdle4;
|
|
|
+
|
|
|
+ @Value("${spring.datasource.data.connection-test-query:}")
|
|
|
+ private String connectionTestQuery4;
|
|
|
+
|
|
|
+ @Value("${spring.datasource.data.max-lifetime:120000}")
|
|
|
+ private Long maxLifetime4;
|
|
|
+
|
|
|
+ @Value("${spring.datasource.data.idle-timeout:30000}")
|
|
|
+ private Long idleTimeout4;
|
|
|
+
|
|
|
+ @Value("${spring.datasource.data.connection-timeout:30000}")
|
|
|
+ private Long connectionTimeout4;
|
|
|
+
|
|
|
+ @Value("${spring.datasource.data.validation-timeout:30000}")
|
|
|
+ private Long validTimeout4;
|
|
|
+
|
|
|
+ @Bean(name = "child4Datasource")
|
|
|
+ //@ConfigurationProperties(prefix = "spring.datasource.data")
|
|
|
+ public DataSource child4Datasource() {
|
|
|
+// return new HikariDataSource(getConfig4());
|
|
|
+ return DataSourceBuilder.create().build();
|
|
|
+ //Spring Boot 2.x默认使用HikariCP
|
|
|
+ }
|
|
|
+
|
|
|
+ private HikariConfig getConfig4() {
|
|
|
+ HikariConfig hikariConfig = new HikariConfig();
|
|
|
+ hikariConfig.setDriverClassName(driveClass4);
|
|
|
+ hikariConfig.setJdbcUrl(url4);
|
|
|
+ hikariConfig.setUsername(username4);
|
|
|
+ hikariConfig.setPassword(password4);
|
|
|
+
|
|
|
+ hikariConfig.setMaximumPoolSize(maxPoolSize4);
|
|
|
+ hikariConfig.setMinimumIdle(minIdle4);
|
|
|
+ hikariConfig.setConnectionTestQuery(connectionTestQuery4);
|
|
|
+ hikariConfig.setMaxLifetime(maxLifetime4);
|
|
|
+ hikariConfig.setIdleTimeout(idleTimeout4);
|
|
|
+ hikariConfig.setConnectionTimeout(connectionTimeout4);
|
|
|
+ hikariConfig.setValidationTimeout(validTimeout4);
|
|
|
+ return hikariConfig;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Bean("child4SqlSessionFactory")
|
|
|
+ public SqlSessionFactory child4SqlSessionFactoryBean(@Qualifier("child4Datasource") DataSource dataSource) throws Exception {
|
|
|
+ SqlSessionFactoryBean sessionFactoryBean = new SqlSessionFactoryBean();
|
|
|
+ sessionFactoryBean.setDataSource(dataSource);
|
|
|
+
|
|
|
+ org.apache.ibatis.session.Configuration configuration = new org.apache.ibatis.session.Configuration();
|
|
|
+ configuration.setCallSettersOnNulls(true); //数据库中字段值为null时也要求返回
|
|
|
+ configuration.setMapUnderscoreToCamelCase(true); //开启驼峰映射
|
|
|
+ configuration.setCacheEnabled(false);
|
|
|
+ sessionFactoryBean.setConfiguration(configuration);
|
|
|
+ return sessionFactoryBean.getObject();
|
|
|
+ }
|
|
|
+
|
|
|
+ @Bean("child4SqlSessionTemplate")
|
|
|
+ public SqlSessionTemplate child4SqlSessionTemplate(@Qualifier("child4SqlSessionFactory") SqlSessionFactory sessionFactory) {
|
|
|
+ return new SqlSessionTemplate(sessionFactory);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Bean(name = "child4DbTransactionManager")
|
|
|
+ public DataSourceTransactionManager child4DbTransactionManager(@Qualifier("child4Datasource") DataSource dataSource){
|
|
|
+ return new DataSourceTransactionManager(dataSource);
|
|
|
+ }
|
|
|
+
|
|
|
@Bean
|
|
|
public DBMgrProxy startDBMgrProxy(){
|
|
|
DBMgrProxy.getInstance().init();
|