|
@@ -0,0 +1,107 @@
|
|
|
+package com.shkpr.service.aimodelpower.configuration;
|
|
|
+
|
|
|
+import com.shkpr.service.aimodelpower.globalcache.GlobalData;
|
|
|
+import com.zaxxer.hikari.HikariConfig;
|
|
|
+import com.zaxxer.hikari.HikariDataSource;
|
|
|
+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.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 = "child2SqlSessionTemplate")
|
|
|
+public class Child2SourceConfiguration {
|
|
|
+ @Value("${spring.datasource.child2pg.driver-class-name:}")
|
|
|
+ private String driveClass = "org.postgresql.Driver";
|
|
|
+
|
|
|
+ @Value("${spring.datasource.child2pg.jdbc-url:}")
|
|
|
+ private String url = "";
|
|
|
+
|
|
|
+ @Value("${spring.datasource.child2pg.username:}")
|
|
|
+ private String username = "";
|
|
|
+
|
|
|
+ @Value("${spring.datasource.child2pg.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 = "child2Datasource")
|
|
|
+ //@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("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);
|
|
|
+ }
|
|
|
+
|
|
|
+ @PostConstruct
|
|
|
+ public void init(){
|
|
|
+ GlobalData.getInstance().setPostGisValid("org.postgis.DriverWrapper".equals(driveClass));
|
|
|
+ }
|
|
|
+}
|