springboot配置多数据源(不同DB)

springBoot集成Mysql+MongoDB
因为在项目中需要用到两个不同的数据源。但是又不存在于一个DB中。让我很是苦恼,不得已只能集成多数据源。
博主文笔不好,只能讲干货了。。
目标:
使用springBoot集成mysql于MongoDB,即一个项目操作多数据源(不同DB)。
步骤一: pom依赖的导入,这一步大家就很熟悉了~
		<!-- mysql begin -->
		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
		</dependency>
		<dependency>
			<groupId>com.alibaba</groupId>
			<artifactId>druid</artifactId>
			<version>1.0.5</version>
		</dependency>
		<!-- mysql end -->
步骤二:配置文件的编写
server:
  port: 8081
## multifl dataSource
## mysql
spring:
  datasource:
    driverClassName: com.mysql.jdbc.Driver
    url: jdbc:mysql://localhost:3306/db_xx?useUnicode=true&characterEncoding=utf-8
    username: root
    password: root
ops:
  mongodb:
    host: localhost
    port: 27017
    database: db_xx

 
 
步骤三: 配置类的编写
1.MongoMasterConfig(为什么是Master呢,嘿嘿)
@Configuration
@EnableAutoConfiguration(exclude = {MongoAutoConfiguration.class, MongoDataAutoConfiguration.class}) //必不可少
@EnableMongoRepositories(basePackages = {"com.xx.mapper.mongodb"},mongoTemplateRef = "demo1MongoTemplate") //配置接口信息
@ComponentScan
@ConfigurationProperties(prefix = "ops.mongodb")// 从配置文件中获取数据
public class MongoMasterConfig extends AbstractMongoConfigure {

    @Override
    @Bean(name = "demo1MongoTemplate")
    @Primary
    public MongoTemplate getMongoTemplate() throws Exception {
        return new MongoTemplate(mongoDbFactory());
    }
}
     2.MysqlDataSourceConfig
@Configuration
@MapperScan(basePackages = MysqlDataSourceConfig.PACKAGE,sqlSessionFactoryRef = "sqlSessionFactory")
@EnableAutoConfiguration(exclude = {DataSourceAutoConfiguration.class})
public class MysqlDataSourceConfig {
    //精确定位Mapper接口到master目录,以便与其他数据隔离
    static final String PACKAGE = "com.xx.mapper.mysql";

    static final String MAPPER_LOCATION = "classpath*:mapper/*.xml";

    @Value("${spring.datasource.url}")
    private String url;

    @Value("${spring.datasource.driverClassName}")
    private String driverClass;

    @Value("${spring.datasource.username}")
    private String userName;

    @Value("${spring.datasource.password}")
    private String password;

    /**
     * 创建数据源
     * @return
     */
    @Bean(name = "dataSource")
    @Primary
    public DataSource masterDataSource(){
        //实例化阿里数据源
        DruidDataSource druidDataSource = new DruidDataSource();
        druidDataSource.setUrl("jdbc:mysql://localhost:3306/db_xx");
        druidDataSource.setDriverClassName("com.mysql.jdbc.Driver");
        druidDataSource.setUsername("root");
        druidDataSource.setPassword("root");
        return druidDataSource;
    }

    /**
     * 事务
     * @return
     */
    @Bean(name = "transactionManager")
    public DataSourceTransactionManager masterTransactionManager(){
        return new DataSourceTransactionManager(masterDataSource());
    }

    /*创建SqlSessionFactory
     */
    @Bean(name = "sqlSessionFactory")
    public SqlSessionFactory masterSqlSessionFactory(@Qualifier("dataSource") DataSource masterDataSource) throws Exception {
        final SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
        sqlSessionFactoryBean.setDataSource(masterDataSource);
        sqlSessionFactoryBean.setMapperLocations(new PathMatchingResourcePatternResolver()//
                .getResources(MysqlDataSourceConfig.MAPPER_LOCATION));
        return sqlSessionFactoryBean.getObject();
    }

到此为止~,你的项目已经配置好了多数据源(不同DB),使用时,就像以前一样。。。













  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值