`
knight_black_bob
  • 浏览: 853139 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

springboot 详解 (三) 多数据源

阅读更多

 ----------------------------------------------------------------------------------------------------------------

springboot 详解 (一) helloworld                                    下载demo          

springboot 详解 (二) crud                                             下载demo     

springboot 详解 (三) 多数据源                                        下载demo      

springboot 详解 (四)redis & filter                                    下载demo    

springboot 详解 (五)interceptor                                       下载demo     

springboot 详解 (六)servlet & scheduled & listener         下载demo     

springboot 详解(七) dubbox & zookeeper   下载(productor) 下载(constumser)

springboot 同步解耦 异步化 下载demo

springboot jenkins docker 部署 

springboot 详解(八) springboot & springcloud 

----------------------------------------------------------------------------------------------------------------

 

 

 



 

 

package com.curiousby.cn.datasources;

import javax.sql.DataSource;

import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.autoconfigure.jdbc.DataSourceBuilder;
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;

/**
 * @Type DataSourceConfig.java
 * @Desc 
 * @author cmcc-B100036
 * @date 2016年11月15日 下午5:38:44
 * @version 
 */

@Configuration
public class DataSourceConfig {

    @Bean(name = "primaryDS")
    @Qualifier("primaryDS")
    @Primary
    @ConfigurationProperties(prefix = "datasource.one.mysql")
    public DataSource primaryDataSource() {
        return DataSourceBuilder.create().build();
    }

    @Bean(name = "secondaryDS")
    @Qualifier("secondaryDS")
    @ConfigurationProperties(prefix = "datasource.two.mysql")
    public DataSource secondaryDataSource() {
        return DataSourceBuilder.create().build();
    }

}

 

 

 

 

 

@Configuration
@EnableTransactionManagement
@EnableJpaRepositories(entityManagerFactoryRef = "entityManagerFactoryPrimary", transactionManagerRef = "transactionManagerPrimary", basePackages = {
        "com.curiousby.cn.one.dao" }) //设置dao 
public class RepositoryPrimaryConfig {

    @Autowired
    private JpaProperties jpaProperties;

    @Autowired
    @Qualifier("primaryDS")
    private DataSource primaryDS;

    @Bean(name = "entityManagerPrimary")
    @Primary
    public EntityManager entityManager(EntityManagerFactoryBuilder builder) {
        return entityManagerFactoryPrimary(builder).getObject().createEntityManager();
    }

    @Bean(name = "entityManagerFactoryPrimary")
    @Primary
    public LocalContainerEntityManagerFactoryBean entityManagerFactoryPrimary(EntityManagerFactoryBuilder builder) {
        return builder.dataSource(primaryDS).properties(getVendorProperties(primaryDS))
                .packages("com.curiousby.cn.one.entity") //设置实体类所在位置
                .persistenceUnit("primaryPersistenceUnit").build();
    }

    private Map<String, String> getVendorProperties(DataSource dataSource) {
        return jpaProperties.getHibernateProperties(dataSource);
    }

    @Bean(name = "transactionManagerPrimary")
    @Primary
    PlatformTransactionManager transactionManagerPrimary(EntityManagerFactoryBuilder builder) {
        return new JpaTransactionManager(entityManagerFactoryPrimary(builder).getObject());
    }

}

 

@Configuration
@EnableTransactionManagement
@EnableJpaRepositories(entityManagerFactoryRef = "entityManagerFactorySecondary", transactionManagerRef = "transactionManagerSecondary", basePackages = {
        "com.curiousby.cn.two.dao" })
public class RepositorySecondaryConfig {
    @Autowired
    private JpaProperties jpaProperties;

    @Autowired
    @Qualifier("secondaryDS")
    private DataSource secondaryDS;

    @Bean(name = "entityManagerSecondary")
    public EntityManager entityManager(EntityManagerFactoryBuilder builder) {
        return entityManagerFactorySecondary(builder).getObject().createEntityManager();
    }

    @Bean(name = "entityManagerFactorySecondary")
    public LocalContainerEntityManagerFactoryBean entityManagerFactorySecondary(EntityManagerFactoryBuilder builder) {
        return builder.dataSource(secondaryDS).properties(getVendorProperties(secondaryDS))
                .packages("com.curiousby.cn.two.entity")
                .persistenceUnit("secondaryPersistenceUnit").build();
    }

    private Map<String, String> getVendorProperties(DataSource dataSource) {
        return jpaProperties.getHibernateProperties(dataSource);
    }

    @Bean(name = "transactionManagerSecondary")
    PlatformTransactionManager transactionManagerSecondary(EntityManagerFactoryBuilder builder) {
        return new JpaTransactionManager(entityManagerFactorySecondary(builder).getObject());
    }

}

 

 

#multi datasources
datasource.one.mysql.url=jdbc:mysql://localhost:3306/database
datasource.one.mysql.username=root
datasource.one.mysql.password=root
datasource.one.mysql.driverClassName=com.mysql.jdbc.Driver

#DataSource settings for mysql
datasource.two.mysql.url=jdbc:mysql://127.0.0.1:3306/database2
datasource.two.mysql.username=root
datasource.two.mysql.password=root
datasource.two.mysql.driverClassName=com.mysql.jdbc.Driver

#one datasource
#spring.datasource.url=jdbc:mysql://localhost:3306/database
#spring.datasource.username=root
#spring.datasource.password=root
#spring.datasource.driverClassName=com.mysql.jdbc.Driver

 
spring.jpa.database=MYSQL
spring.jpa.show-sql=true
spring.jpa.hibernate.ddl-auto=update
spring.jpa.hibernate.naming-strategy=org.hibernate.cfg.ImprovedNamingStrategy
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5Dialect

 

 



 

 

 

 

 

 

 

 

 

 

捐助开发者 

在兴趣的驱动下,写一个免费的东西,有欣喜,也还有汗水,希望你喜欢我的作品,同时也能支持一下。 当然,有钱捧个钱场(支持支付宝和微信 以及扣扣群),没钱捧个人场,谢谢各位。

 

个人主页http://knight-black-bob.iteye.com/



 
 
 谢谢您的赞助,我会做的更好!

  • 大小: 122.5 KB
  • 大小: 30.5 KB
0
1
分享到:
评论

相关推荐

    SpringBoot多数据源配置(方式一:配置多个mapper扫描不同的包路径实现多数据源配置).docx

    ### Spring Boot多数据源配置详解 #### 一、引言 在实际的软件开发过程中,随着业务需求的多样化,单一的数据源已经无法满足所有场景的需求。例如,有时我们需要同时访问两个或更多的数据库来完成复杂的业务逻辑,...

    详解SpringBoot和Mybatis配置多数据源

    SpringBoot和Mybatis配置多数据源详解 在当前的软件开发中,多数据源配置已经成为一个非常常见的需求,特别是在大型企业级应用程序中。SpringBoot作为一个流行的Java框架,提供了非常便捷的方式来配置多数据源,...

    springboot整合mybatis多数据源动态配置 swagger

    以上就是关于"springboot整合mybatis多数据源动态配置 swagger"这一主题的知识点详解,涵盖了Spring Boot与MyBatis的整合、多数据源读写分离的实现,以及Swagger在API文档和测试中的应用。理解并掌握这些内容,对于...

    SpringBoot2整合Redis多数据源步骤详解

    SpringBoot2整合Redis多数据源步骤详解 SpringBoot2整合Redis多数据源是一个非常重要的知识点, especially 在分布式系统中,REDIS作为一个高性能的Key-Value数据库,广泛应用于缓存、Session管理、消息队列等领域...

    详解springboot+mybatis多数据源最简解决方案

    SpringBoot+MyBatis多数据源解决方案 SpringBoot框架中,使用MyBatis框架来实现多数据源解决方案是非常常见的场景。本篇文章将详细介绍如何使用SpringBoot框架来实现多数据源解决方案,并提供了一个简单的解决方案...

    springboot之mybatis多数据源最简解决方案.docx

    ### Spring Boot 与 MyBatis 多数据源配置详解 #### 一、引言 在实际的项目开发中,为了实现高可用性、负载均衡或数据分片等目的,经常需要使用到多数据源配置。Spring Boot 结合 MyBatis 的多数据源配置可以很好...

    详解springboot采用多数据源对JdbcTemplate配置的方法

    SpringBoot多数据源JdbcTemplate配置详解 在SpringBoot项目中,通常我们会使用JdbcTemplate来进行数据库操作。但是在某些情况下,我们可能需要连接多个数据源,例如某个业务系统需要连接多个数据库来进行数据查询或...

    SpringBoot详解.doc

    【SpringBoot详解】 SpringBoot是由Pivotal团队提供的全新框架,其设计目标是用来简化新Spring应用的初始搭建以及开发过程。SpringBoot并非Spring框架的替代品,而是旨在简化Spring应用的初始搭建以及开发过程,它...

    Springboot整合多数据源代码示例详解

    SpringBoot整合多数据源代码示例详解 SpringBoot是当前最流行的Java框架之一,对于多数据源的支持也变得非常重要。本文将详细介绍如何在SpringBoot中整合多数据源,包括配置数据源、使用AbstractRoutingDataSource...

    Spring Boot 2.0多数据源配置方法实例详解

    Spring Boot 2.0 多数据源配置方法实例详解 Spring Boot 2.0 多数据源配置方法实例详解是一篇详细介绍 Spring Boot 2.0 中多数据源配置方法的文章。该文章主要介绍了如何在 Spring Boot 2.0 中配置多个数据源,并...

    基于注解的Spring多数据源配置和使用

    ### 基于注解的Spring多数据源配置与使用详解 #### 一、引言 在企业级应用开发中,经常会遇到需要从多个数据库拉取数据的情况,比如进行跨库查询、定时任务中的数据分析及报表统计等。Spring框架作为Java开发领域的...

    Spring boot 连接多数据源过程详解

    Spring Boot 连接多数据源过程详解 Spring Boot 框架提供了多种方式来连接多个数据源,下面是使用 Spring Boot 连接多数据源的详细过程。 多数据源配置 在 Spring Boot 中,使用多数据源需要在 application.yml ...

    SpringBoot整合Druid数据源过程详解

    SpringBoot整合Druid数据源过程详解 SpringBoot整合Druid数据源是当前流行的开发方式之一,Druid数据源是目前最流行的数据库连接池之一。本篇文章将详细介绍SpringBoot整合Druid数据源的过程,并通过示例代码对...

    通过Spring Boot配置动态数据源访问多个数据库的实现代码

    Spring Boot配置动态数据源访问多个数据库实现代码详解 通过Spring Boot配置动态数据源访问多个数据库可以实现数据库的动态增删和数量无限的支持,下面将详细介绍该实现代码的知识点。 数据源配置管理 在Spring ...

    SpringBoot多数据源配置(方式二:在代码中动态切换需要使用哪个数据源).docx

    ### Spring Boot多数据源配置详解 #### 一、多数据源背景及应用场景 在实际的Spring Boot项目开发过程中,通常我们会为项目配置一个主要的数据源,以便于项目的正常运行与数据库交互。但在某些复杂的业务场景下,...

    springboot+mysql+mybatis+druid实现多数据源配置

    ### Spring Boot 多数据源配置详解 #### 一、引言 在许多复杂的应用场景下,我们常常需要处理多个数据库的交互操作。Spring Boot 提供了便捷的方式来集成多种技术栈,其中包括多数据源的支持。本篇文章将详细介绍...

    SpringBoot @ConfigurationProperties使用详解(源代码)

    以数据源配置为例: 使用@ConfigurationProperties注解到普通类,然后再通过@EnableConfigurationPropertiesz注解到启动类中定义为Bean。 这里User对象并没有使用@Component相关注解。 @...

    Springboot+clickhouse 集成demo

    3. **创建数据源**:SpringBoot会自动识别上述配置并创建数据源。若需要自定义配置,可以通过`@Bean`注解创建`DataSource`实例。 4. **JdbcTemplate或JPA集成**:SpringBoot提供了`JdbcTemplate`和`JPA`两种方式与...

    Spring Boot详解

    - 数据源配置,如使用application.properties或YAML文件配置数据库连接。 8. Spring Boot的事务管理 - 使用@Transactional注解进行声明式事务管理。 - 自动配置事务管理器,如DataSourceTransactionManager或Jpa...

    详解基于Spring Boot与Spring Data JPA的多数据源配置

    基于Spring Boot与Spring Data JPA的多数据源配置 Spring Boot作为当前最流行的Java Web框架之一,提供了许多实用的功能和配置项,然而,在实际项目中,我们经常会遇到多数据源配置的问题,例如在一个项目中需要...

Global site tag (gtag.js) - Google Analytics