ChildSourceConfiguration.java 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. package io.github.pnoker.gateway.config;
  2. import com.zaxxer.hikari.HikariConfig;
  3. import com.zaxxer.hikari.HikariDataSource;
  4. import io.github.pnoker.gateway.dbdao.DBMgrProxy;
  5. import org.apache.ibatis.session.SqlSessionFactory;
  6. import org.mybatis.spring.SqlSessionFactoryBean;
  7. import org.mybatis.spring.SqlSessionTemplate;
  8. import org.mybatis.spring.annotation.MapperScan;
  9. import org.springframework.beans.factory.annotation.Qualifier;
  10. import org.springframework.beans.factory.annotation.Value;
  11. import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
  12. import org.springframework.context.annotation.Bean;
  13. import org.springframework.context.annotation.Configuration;
  14. import org.springframework.jdbc.datasource.DataSourceTransactionManager;
  15. import javax.annotation.PostConstruct;
  16. import javax.sql.DataSource;
  17. @Configuration
  18. @MapperScan(basePackages = "io.github.pnoker.gateway.dbdao.mapper", sqlSessionTemplateRef = "childSqlSessionTemplate")
  19. public class ChildSourceConfiguration {
  20. @Value("${spring.datasource.childpg.driver-class-name:}")
  21. private String driveClass = "org.postgresql.Driver";
  22. @Value("${spring.datasource.childpg.jdbc-url:}")
  23. private String url = "";
  24. @Value("${spring.datasource.childpg.username:}")
  25. private String username = "";
  26. @Value("${spring.datasource.childpg.password:}")
  27. private String password = "";
  28. @Value("${spring.datasource.data.maximum-pool-size:200}")
  29. private Integer maxPoolSize;
  30. @Value("${spring.datasource.data.minimum-idle:1}")
  31. private Integer minIdle;
  32. @Value("${spring.datasource.data.connection-test-query:}")
  33. private String connectionTestQuery;
  34. @Value("${spring.datasource.data.max-lifetime:120000}")
  35. private Long maxLifetime;
  36. @Value("${spring.datasource.data.idle-timeout:30000}")
  37. private Long idleTimeout;
  38. @Value("${spring.datasource.data.connection-timeout:30000}")
  39. private Long connectionTimeout;
  40. @Value("${spring.datasource.data.validation-timeout:30000}")
  41. private Long validTimeout;
  42. @Bean(name = "childDatasource")
  43. //@ConfigurationProperties(prefix = "spring.datasource.data")
  44. public DataSource mainDataSource() {
  45. return new HikariDataSource(getConfig());
  46. //return DataSourceBuilder.create().build();
  47. //Spring Boot 2.x默认使用HikariCP
  48. }
  49. private HikariConfig getConfig() {
  50. HikariConfig hikariConfig = new HikariConfig();
  51. hikariConfig.setDriverClassName(driveClass);
  52. hikariConfig.setJdbcUrl(url);
  53. hikariConfig.setUsername(username);
  54. hikariConfig.setPassword(password);
  55. hikariConfig.setMaximumPoolSize(maxPoolSize);
  56. hikariConfig.setMinimumIdle(minIdle);
  57. hikariConfig.setConnectionTestQuery(connectionTestQuery);
  58. hikariConfig.setMaxLifetime(maxLifetime);
  59. hikariConfig.setIdleTimeout(idleTimeout);
  60. hikariConfig.setConnectionTimeout(connectionTimeout);
  61. hikariConfig.setValidationTimeout(validTimeout);
  62. return hikariConfig;
  63. }
  64. @Bean("childSqlSessionFactory")
  65. public SqlSessionFactory childSqlSessionFactoryBean(@Qualifier("mainDatasource") DataSource dataSource) throws Exception {
  66. SqlSessionFactoryBean sessionFactoryBean = new SqlSessionFactoryBean();
  67. sessionFactoryBean.setDataSource(dataSource);
  68. org.apache.ibatis.session.Configuration configuration = new org.apache.ibatis.session.Configuration();
  69. configuration.setCallSettersOnNulls(true); //数据库中字段值为null时也要求返回
  70. configuration.setMapUnderscoreToCamelCase(true); //开启驼峰映射
  71. configuration.setCacheEnabled(false);
  72. sessionFactoryBean.setConfiguration(configuration);
  73. return sessionFactoryBean.getObject();
  74. }
  75. @Bean("childSqlSessionTemplate")
  76. public SqlSessionTemplate childSqlSessionTemplate(@Qualifier("childSqlSessionFactory") SqlSessionFactory sessionFactory) {
  77. return new SqlSessionTemplate(sessionFactory);
  78. }
  79. @Bean(name = "childDbTransactionManager")
  80. public DataSourceTransactionManager childDbTransactionManager(@Qualifier("childDatasource") DataSource dataSource){
  81. return new DataSourceTransactionManager(dataSource);
  82. }
  83. @PostConstruct
  84. public void init(){
  85. GlobalData.getInstance().setPostGisValid("org.postgis.DriverWrapper".equals(driveClass));
  86. }
  87. // @Bean
  88. // public DBMgrProxy startDBMgrProxy(){
  89. // DBMgrProxy.getInstance().init();
  90. // return DBMgrProxy.getInstance();
  91. // }
  92. }