Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.huifenqi.channel.db.conf;
- import com.alibaba.druid.pool.DruidDataSource;
- import org.apache.ibatis.session.SqlSessionFactory;
- import org.mybatis.spring.SqlSessionFactoryBean;
- import org.mybatis.spring.annotation.MapperScan;
- import org.springframework.beans.factory.annotation.Qualifier;
- import org.springframework.boot.context.properties.ConfigurationProperties;
- import org.springframework.context.annotation.Bean;
- import org.springframework.context.annotation.Configuration;
- import org.springframework.context.annotation.Primary;
- import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
- import org.springframework.jdbc.datasource.DataSourceTransactionManager;
- import javax.sql.DataSource;
- /**
- * Created by smq on 2017/4/22.
- */
- @Configuration
- @ConfigurationProperties(prefix = "db.master")
- @MapperScan(basePackages = MasterDataSourceConfig.PACKAGE, sqlSessionFactoryRef = "masterSqlSessionFactory")
- public class MasterDataSourceConfig {
- // 精确到 master 目录,以便跟其他数据源隔离
- static final String PACKAGE = "com.huifenqi.channel.db.master";
- static final String MAPPER_LOCATION = "classpath:mapper/master/*.xml";
- private String driverClassName;
- private String url;
- private String username;
- private String password;
- //初始化大小,最小,最大
- private int initialSize;
- private int minIdle;
- private int maxWait;
- //配置获取连接等待超时的时间
- private int maxActive;
- //配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
- private int timeBetweenEvictionRunsMillis;
- //配置一个连接在池中最小生存的时间,单位是毫秒
- private int minEvictableIdleTimeMillis;
- @Bean(name = "masterDataSource")
- @Primary
- public DataSource dataSource() {
- DruidDataSource dataSource = new DruidDataSource();
- dataSource.setDriverClassName(driverClassName);
- dataSource.setUrl(url);
- dataSource.setUsername(username);
- dataSource.setPassword(password);
- dataSource.setInitialSize(initialSize);
- dataSource.setMinIdle(minIdle);
- dataSource.setMaxWait(maxWait);
- dataSource.setMaxActive(maxActive);
- dataSource.setTimeBetweenEvictionRunsMillis(timeBetweenEvictionRunsMillis);
- dataSource.setMinEvictableIdleTimeMillis(minEvictableIdleTimeMillis);
- return dataSource;
- }
- @Bean(name = "masterTransactionManager")
- @Primary
- public DataSourceTransactionManager transactionManager() {
- return new DataSourceTransactionManager(dataSource());
- }
- @Bean(name = "masterSqlSessionFactory")
- @Primary
- public SqlSessionFactory sqlSessionFactory(@Qualifier("masterDataSource") DataSource ds)
- throws Exception {
- final SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
- sessionFactory.setDataSource(ds);
- sessionFactory.setMapperLocations(new PathMatchingResourcePatternResolver()
- .getResources(MasterDataSourceConfig.MAPPER_LOCATION));
- return sessionFactory.getObject();
- }
- public void setDriverClassName(String driverClassName) {
- this.driverClassName = driverClassName;
- }
- public void setUrl(String url) {
- this.url = url;
- }
- public void setUsername(String username) {
- this.username = username;
- }
- public void setPassword(String password) {
- this.password = password;
- }
- public void setInitialSize(int initialSize) {
- this.initialSize = initialSize;
- }
- public void setMinIdle(int minIdle) {
- this.minIdle = minIdle;
- }
- public void setMaxWait(int maxWait) {
- this.maxWait = maxWait;
- }
- public void setMaxActive(int maxActive) {
- this.maxActive = maxActive;
- }
- public void setTimeBetweenEvictionRunsMillis(int timeBetweenEvictionRunsMillis) {
- this.timeBetweenEvictionRunsMillis = timeBetweenEvictionRunsMillis;
- }
- public void setMinEvictableIdleTimeMillis(int minEvictableIdleTimeMillis) {
- this.minEvictableIdleTimeMillis = minEvictableIdleTimeMillis;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement