123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113 |
- 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.context.annotation.Bean;
- import org.springframework.context.annotation.Configuration;
- import org.springframework.jdbc.datasource.DataSourceTransactionManager;
- import javax.annotation.PostConstruct;
- import javax.sql.DataSource;
- @Configuration
- @MapperScan(basePackages = "io.github.pnoker.gateway.dbdao.mapper", sqlSessionTemplateRef = "childSqlSessionTemplate")
- public class ChildSourceConfiguration {
- @Value("${spring.datasource.childpg.driver-class-name:}")
- private String driveClass = "org.postgresql.Driver";
- @Value("${spring.datasource.childpg.jdbc-url:}")
- private String url = "";
- @Value("${spring.datasource.childpg.username:}")
- private String username = "";
- @Value("${spring.datasource.childpg.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 = "childDatasource")
- //@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("childSqlSessionFactory")
- public SqlSessionFactory childSqlSessionFactoryBean(@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("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);
- }
- @PostConstruct
- public void init(){
- GlobalData.getInstance().setPostGisValid("org.postgis.DriverWrapper".equals(driveClass));
- }
- // @Bean
- // public DBMgrProxy startDBMgrProxy(){
- // DBMgrProxy.getInstance().init();
- // return DBMgrProxy.getInstance();
- // }
- }
|