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

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/m0_37625860/article/details/78912813
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),使用时,就像以前一样。。。













猜你喜欢

转载自blog.csdn.net/m0_37625860/article/details/78912813