Advertisement
Guest User

Untitled

a guest
Apr 23rd, 2017
151
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.08 KB | None | 0 0
  1. package com.huifenqi.channel.db.conf;
  2.  
  3. import com.alibaba.druid.pool.DruidDataSource;
  4. import org.apache.ibatis.session.SqlSessionFactory;
  5. import org.mybatis.spring.SqlSessionFactoryBean;
  6. import org.mybatis.spring.annotation.MapperScan;
  7. import org.springframework.beans.factory.annotation.Qualifier;
  8. import org.springframework.boot.context.properties.ConfigurationProperties;
  9. import org.springframework.context.annotation.Bean;
  10. import org.springframework.context.annotation.Configuration;
  11. import org.springframework.context.annotation.Primary;
  12. import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
  13. import org.springframework.jdbc.datasource.DataSourceTransactionManager;
  14.  
  15. import javax.sql.DataSource;
  16.  
  17. /**
  18. * Created by smq on 2017/4/22.
  19. */
  20. @Configuration
  21. @ConfigurationProperties(prefix = "db.master")
  22. @MapperScan(basePackages = MasterDataSourceConfig.PACKAGE, sqlSessionFactoryRef = "masterSqlSessionFactory")
  23. public class MasterDataSourceConfig {
  24. // 精确到 master 目录,以便跟其他数据源隔离
  25. static final String PACKAGE = "com.huifenqi.channel.db.master";
  26. static final String MAPPER_LOCATION = "classpath:mapper/master/*.xml";
  27.  
  28. private String driverClassName;
  29. private String url;
  30. private String username;
  31. private String password;
  32. //初始化大小,最小,最大
  33. private int initialSize;
  34. private int minIdle;
  35. private int maxWait;
  36. //配置获取连接等待超时的时间
  37. private int maxActive;
  38. //配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
  39. private int timeBetweenEvictionRunsMillis;
  40. //配置一个连接在池中最小生存的时间,单位是毫秒
  41. private int minEvictableIdleTimeMillis;
  42.  
  43. @Bean(name = "masterDataSource")
  44. @Primary
  45. public DataSource dataSource() {
  46. DruidDataSource dataSource = new DruidDataSource();
  47. dataSource.setDriverClassName(driverClassName);
  48. dataSource.setUrl(url);
  49. dataSource.setUsername(username);
  50. dataSource.setPassword(password);
  51. dataSource.setInitialSize(initialSize);
  52. dataSource.setMinIdle(minIdle);
  53. dataSource.setMaxWait(maxWait);
  54. dataSource.setMaxActive(maxActive);
  55. dataSource.setTimeBetweenEvictionRunsMillis(timeBetweenEvictionRunsMillis);
  56. dataSource.setMinEvictableIdleTimeMillis(minEvictableIdleTimeMillis);
  57. return dataSource;
  58. }
  59.  
  60. @Bean(name = "masterTransactionManager")
  61. @Primary
  62. public DataSourceTransactionManager transactionManager() {
  63. return new DataSourceTransactionManager(dataSource());
  64. }
  65.  
  66. @Bean(name = "masterSqlSessionFactory")
  67. @Primary
  68. public SqlSessionFactory sqlSessionFactory(@Qualifier("masterDataSource") DataSource ds)
  69. throws Exception {
  70. final SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
  71. sessionFactory.setDataSource(ds);
  72. sessionFactory.setMapperLocations(new PathMatchingResourcePatternResolver()
  73. .getResources(MasterDataSourceConfig.MAPPER_LOCATION));
  74. return sessionFactory.getObject();
  75. }
  76.  
  77.  
  78. public void setDriverClassName(String driverClassName) {
  79. this.driverClassName = driverClassName;
  80. }
  81.  
  82. public void setUrl(String url) {
  83. this.url = url;
  84. }
  85.  
  86. public void setUsername(String username) {
  87. this.username = username;
  88. }
  89.  
  90. public void setPassword(String password) {
  91. this.password = password;
  92. }
  93.  
  94. public void setInitialSize(int initialSize) {
  95. this.initialSize = initialSize;
  96. }
  97.  
  98. public void setMinIdle(int minIdle) {
  99. this.minIdle = minIdle;
  100. }
  101.  
  102. public void setMaxWait(int maxWait) {
  103. this.maxWait = maxWait;
  104. }
  105.  
  106. public void setMaxActive(int maxActive) {
  107. this.maxActive = maxActive;
  108. }
  109.  
  110. public void setTimeBetweenEvictionRunsMillis(int timeBetweenEvictionRunsMillis) {
  111. this.timeBetweenEvictionRunsMillis = timeBetweenEvictionRunsMillis;
  112. }
  113.  
  114. public void setMinEvictableIdleTimeMillis(int minEvictableIdleTimeMillis) {
  115. this.minEvictableIdleTimeMillis = minEvictableIdleTimeMillis;
  116. }
  117. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement