SecondSourceConfiguration.java 4.7 KB

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