123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443 |
- package io.github.pnoker.gateway.config;
- import com.zaxxer.hikari.HikariConfig;
- import com.zaxxer.hikari.HikariDataSource;
- import io.github.pnoker.gateway.dbdao.DBMgrProxy;
- import org.apache.ibatis.session.SqlSessionFactory;
- import org.mybatis.spring.SqlSessionFactoryBean;
- import org.mybatis.spring.SqlSessionTemplate;
- 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;
- import org.springframework.jdbc.datasource.DataSourceTransactionManager;
- import javax.annotation.PostConstruct;
- import javax.sql.DataSource;
- @Configuration
- @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";
- @Value("${spring.datasource.jdbc-url:}")
- private String url = "";
- @Value("${spring.datasource.username:}")
- private String username = "";
- @Value("${spring.datasource.password:}")
- private String password = "";
- @Value("${spring.datasource.data.maximum-pool-size:200}")
- private Integer maxPoolSize;
- @Value("${spring.datasource.data.minimum-idle:1}")
- private Integer minIdle;
- @Value("${spring.datasource.data.connection-test-query:}")
- private String connectionTestQuery;
- @Value("${spring.datasource.data.max-lifetime:120000}")
- private Long maxLifetime;
- @Value("${spring.datasource.data.idle-timeout:30000}")
- private Long idleTimeout;
- @Value("${spring.datasource.data.connection-timeout:30000}")
- private Long connectionTimeout;
- @Value("${spring.datasource.data.validation-timeout:30000}")
- private Long validTimeout;
- @Bean(name = "mainDatasource")
- //@ConfigurationProperties(prefix = "spring.datasource.data")
- public DataSource mainDataSource() {
- return new HikariDataSource(getConfig());
- //return DataSourceBuilder.create().build();
- //Spring Boot 2.x默认使用HikariCP
- }
- private HikariConfig getConfig() {
- HikariConfig hikariConfig = new HikariConfig();
- hikariConfig.setDriverClassName(driveClass);
- hikariConfig.setJdbcUrl(url);
- hikariConfig.setUsername(username);
- hikariConfig.setPassword(password);
- hikariConfig.setMaximumPoolSize(maxPoolSize);
- hikariConfig.setMinimumIdle(minIdle);
- hikariConfig.setConnectionTestQuery(connectionTestQuery);
- hikariConfig.setMaxLifetime(maxLifetime);
- hikariConfig.setIdleTimeout(idleTimeout);
- hikariConfig.setConnectionTimeout(connectionTimeout);
- hikariConfig.setValidationTimeout(validTimeout);
- return hikariConfig;
- }
- @Bean("mainSqlSessionFactory")
- public SqlSessionFactory mainSqlSessionFactoryBean(@Qualifier("mainDatasource") 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("mainSqlSessionTemplate")
- public SqlSessionTemplate mainSqlSessionTemplate(@Qualifier("mainSqlSessionFactory") SqlSessionFactory sessionFactory) {
- return new SqlSessionTemplate(sessionFactory);
- }
- @Bean(name = "mainDbTransactionManager")
- 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();
- return DBMgrProxy.getInstance();
- }
- }
|