SpringBoot配置多个数据源

1、首先在application.properties文件中配置数据源信息(以下的可作为参考)

#dev datasource
dev.datasource.driverClassName=com.mysql.jdbc.Driver
dev.datasource.jdbcUrl=jdbc:mysql://localhost:3306/dev?useUnicode=true&characterEncoding=utf-8&useSSL=false
dev.datasource.username=root
dev.datasource.password=root

#online datasource
online.spring.datasource.driverClassName=com.mysql.jdbc.Driver
online.spring.datasource.jdbcUrl=jdbc:mysql://localhost:3306/online?useUnicode=true&characterEncoding=utf-8&useSSL=false
online.spring.datasource.username=root
online.spring.datasource.password=root

我这里是oracle数据库,所以配置信息跟mysql、sqlserver数据库jdbc.Url长得不一样,

2、下面我们创建一个DbConfigModel.java来读取配置信息

public class DBConfigModel {

	private String driverClassName;
	
	private String jdbcUrl;
	
	private String username;
	
	private String password;

	public String getDriverClassName() {
		return driverClassName;
	}

	public void setDriverClassName(String driverClassName) {
		this.driverClassName = driverClassName;
	}

	public String getJdbcUrl() {
		return jdbcUrl;
	}

	public void setJdbcUrl(String jdbcUrl) {
		this.jdbcUrl = jdbcUrl;
	}

	public String getUsername() {
		return username;
	}

	public void setUsername(String username) {
		this.username = username;
	}

	public String getPassword() {
		return password;
	}

	public void setPassword(String password) {
		this.password = password;
	}
	
}

 3、下面我们来配置两个DbConfigModel 来保存两个数据源配置信息

@Configuration
public class ConfigurationBeans {

	@Bean(name = "devDBConfigModel")
	@ConfigurationProperties(prefix = "dev.spring.datasource")
	public DBConfigModel devDBConfigModel() {
		return new DBConfigModel();
	}
	
	@Bean(name = "onlineDBConfigModel")
	@ConfigurationProperties(prefix = "online.spring.datasource")
	public DBConfigModel onlineDBConfigModel() {
		return new DBConfigModel();
	}
	
}

4、接下来我们来配置比较关键的配置信息,我就把全部的代码拷出来

@Configuration
@MapperScan(basePackages = "com.*****.dao.mapper", sqlSessionFactoryRef = "devSqlSessionFactory")
public class DevDataSourceConfig {

    /**
     * dataSource
     * @return
     */
    @Bean(name = "devDataSource")
    public DataSource dataSource(@Qualifier("devDbConfigModel") DBConfigModel dbConfigModel) {
        DruidDataSource dataSource = new DruidDataSource();
        dataSource.setDriverClassName(dbConfigModel.getDriverClassName());
        dataSource.setUrl(dbConfigModel.getJdbcUrl());
        dataSource.setUsername(dbConfigModel.getUsername());
        dataSource.setPassword(dbConfigModel.getPassword());
        dataSource.setInitialSize(1);
        dataSource.setMaxActive(10);
        dataSource.setMinIdle(1);
        dataSource.setMaxWait(60 * 1000);
        dataSource.setTimeBetweenEvictionRunsMillis(60 * 1000);
        dataSource.setMinEvictableIdleTimeMillis(300 * 1000);
        dataSource.setTestWhileIdle(true);
        return dataSource;
    }

    /**
     * sqlSessionFactory
     * @param dataSource
     * @return
     * @throws Exception
     */
    @Bean("devSqlSessionFactory")
    public SqlSessionFactory sqlSessionFactory(@Qualifier("devDataSource") DataSource dataSource) throws Exception {
        SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
        bean.setDataSource(dataSource);
        bean.setTypeAliasesPackage("com.qt.scs.admin.dao.entity");
        bean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:mapper/*.xml"));
        return bean.getObject();
    }
    
    
    /**
     * 事务管理器
     * @param dataSource
     * @return
     */
    @Bean(name="devTransactionManager")
    public DataSourceTransactionManager dataSourceTransactionManager(@Qualifier("devDataSource") DataSource dataSource) {
        return new DataSourceTransactionManager(dataSource);
    }
    
    /**
     * sqlSessionTemplate
     * @param sqlSessionFactory
     * @return
     */
    @Bean(name="devSqlSessionTemplate")
    public SqlSessionTemplate sqlSessionTemplate(@Qualifier("devSqlSessionFactory") SqlSessionFactory sqlSessionFactory) {
        return new SqlSessionTemplate(sqlSessionFactory);
    }

}

5、online的相关配置信息

@Configuration
@MapperScan(basePackages = "com.****.dao.onlineMapper", sqlSessionFactoryRef = "onlineSqlSessionFactory")
public class OnlineDataSourceConfig {

    /**
     * dataSource
     * @return
     */
    @Bean(name = "onlineDataSource")
    public DataSource dataSource(@Qualifier("onlineDbConfigModel") DBConfigModel dbConfigModel) {
        DruidDataSource dataSource = new DruidDataSource();
        dataSource.setDriverClassName(dbConfigModel.getDriverClassName());
        dataSource.setUrl(dbConfigModel.getJdbcUrl());
        dataSource.setUsername(dbConfigModel.getUsername());
        dataSource.setPassword(dbConfigModel.getPassword());
        dataSource.setInitialSize(1);
        dataSource.setMaxActive(10);
        dataSource.setMinIdle(1);
        dataSource.setMaxWait(60 * 1000);
        dataSource.setTimeBetweenEvictionRunsMillis(60 * 1000);
        dataSource.setMinEvictableIdleTimeMillis(300 * 1000);
        dataSource.setTestWhileIdle(true);
        return dataSource;
    }

    /**
     * sqlSessionFactory
     * @param dataSource
     * @return
     * @throws Exception
     */
    @Bean("onlineSqlSessionFactory")
    public SqlSessionFactory sqlSessionFactory(@Qualifier("onlineDataSource") DataSource dataSource) throws Exception {
        SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
        bean.setDataSource(dataSource);
        bean.setTypeAliasesPackage("com.qt.scs.admin.dao.entity");
        bean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:onlineMapper/*.xml"));
        return bean.getObject();
    }
    
    
    /**
     * 事务管理器
     * @param dataSource
     * @return
     */
    @Bean(name="onlineTransactionManager")
    public DataSourceTransactionManager dataSourceTransactionManager(@Qualifier("onlineDataSource") DataSource dataSource) {
        return new DataSourceTransactionManager(dataSource);
    }
    
    /**
     * sqlSessionTemplate
     * @param sqlSessionFactory
     * @return
     */
    @Bean(name="onlineSqlSessionTemplate")
    public SqlSessionTemplate sqlSessionTemplate(@Qualifier("onlineSqlSessionFactory") SqlSessionFactory sqlSessionFactory) {
        return new SqlSessionTemplate(sqlSessionFactory);
    }

}

 5、最后springboot启动类配置

@SpringBootApplication
public class AdminApplication {


    public static void main(String[] args) {
        SpringApplication.run(AdminApplication.class, args);
    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值