zoukankan      html  css  js  c++  java
  • springboot 多数据源的实现

    相关的依赖

    yml配置 

     java配置类:

    DataSourceConfigurerjava
    /**
     * Created by zhiqi.shao on 2017/11/20.
     */
    @Configuration
    public class DataSourceConfigurer {
    
        @Bean
        @ConfigurationProperties("datasource.order")
        public DataSourceProperties orderDataSourceProperties() {
            return new DataSourceProperties();
        }
    
        @Bean
        @ConfigurationProperties("datasource.order")
        public DataSource orderDataSource() {
            return orderDataSourceProperties().initializeDataSourceBuilder().build();
        }
    
        @Bean
        @Primary
        @ConfigurationProperties("datasource.order-query")
        public DataSourceProperties orderQueryDataSourceProperties() {
            return new DataSourceProperties();
        }
    
        @Bean
        @Primary
        @ConfigurationProperties("datasource.order-query")
        public DataSource orderQueryDataSource() {
            return orderQueryDataSourceProperties().initializeDataSourceBuilder().build();
        }
    
    }
    OrderDataSourceConfigurer.java
    /**
     * Created by zhiqi.shao on 2017/11/20.
     */
    @Configuration
    @EnableTransactionManagement
    @EnableJpaRepositories(
            entityManagerFactoryRef = "entityManagerFactoryOrder",
            transactionManagerRef = "transactionManagerOrder",
            basePackages = {"com.hpe.ordersynchro.ordersEntity"}
    )
    public class OrderDataSourceConfigurer {
    
        @Autowired
        @Qualifier("orderDataSource")
        private DataSource orderDataSource;
    
        @Bean(name = "entityManagerOrder")
        public EntityManager entityManager(EntityManagerFactoryBuilder builder){
              return entityManagerFactoryOrder(builder).getObject().createEntityManager();
        }
    
    
        @Bean(name= "entityManagerFactoryOrder")
        public LocalContainerEntityManagerFactoryBean entityManagerFactoryOrder(EntityManagerFactoryBuilder builder){
            return builder
                    .dataSource(orderDataSource)
                    .properties(getVendorProperties(orderDataSource))
                    .packages(new String[]{"com.hpe.ordersynchro.ordersEntity"})
                    .persistenceUnit("orderPersistenceUnit")
                    .build();
    
        }
    
        @Autowired
        private JpaProperties jpaProperties;
    
        private Map<String,String> getVendorProperties(DataSource dataSource){
            return jpaProperties.getHibernateProperties(dataSource);
        }
    
        @Bean(name ="transactionManagerOrder")
        public PlatformTransactionManager transactionManagerOrder(EntityManagerFactoryBuilder builder){
            return new JpaTransactionManager((entityManagerFactoryOrder(builder).getObject()));
        }
    OrderQueryDataSourceConfigurer.java
    /**
     * Created by zhiqi.shao on 2017/11/20.
     */
    @Configuration
    @EnableTransactionManagement
    @EnableJpaRepositories(
            entityManagerFactoryRef = "entityManagerFactoryOrderQuery",
            transactionManagerRef = "transactionManagerOrderQuery",
            basePackages = {"com.hpe.ordersynchro.ordersQueryEntity"}
    )
    public class OrderQueryDataSourceConfigurer {
    
        @Autowired
        @Qualifier("orderQueryDataSource")
        private DataSource orderQueryDataSource;
    
        @Primary
        @Bean(name = "entityManagerOrderQuery")
        public EntityManager entityManager(EntityManagerFactoryBuilder builder){
              return entityManagerFactoryOrderQuery(builder).getObject().createEntityManager();
        }
    
        @Primary
        @Bean(name= "entityManagerFactoryOrderQuery")
        public LocalContainerEntityManagerFactoryBean entityManagerFactoryOrderQuery(EntityManagerFactoryBuilder builder){
            return builder
                    .dataSource(orderQueryDataSource)
                    .properties(getVendorProperties(orderQueryDataSource))
                    .packages(new String[]{"com.hpe.ordersynchro.ordersQueryEntity"})
                    .persistenceUnit("orderQueryPersistenceUnit")
                    .build();
    
        }
    
        @Autowired
        private JpaProperties jpaProperties;
    
        private Map<String,String> getVendorProperties(DataSource dataSource){
            return jpaProperties.getHibernateProperties(dataSource);
        }
    
        @Primary
        @Bean(name ="transactionManagerOrderQuery")
        public PlatformTransactionManager transactionManagerOrderQuery(EntityManagerFactoryBuilder builder){
            return new JpaTransactionManager((entityManagerFactoryOrderQuery(builder).getObject()));
        }
    
    
    }

    注解:加了@primary就是默认数据源

    分别是jpa和jpa对应实体的位置,我这里还是将它们放在了一个包下,所以上面配置的扫描路劲相同:

  • 相关阅读:
    性能测试的一些大实话:会linux命令以及其它工具,到底能不能做性能分析调优?
    使用Docker方式部署Gitlab,Gitlab-Runner并使用Gitlab提供的CI/CD功能自动化构建SpringBoot项目
    Docker安装Gitlab
    Docker部署ELK
    Dockerfile中ADD命令详细解读
    使用Gitlab CI/CD功能在本地部署 Spring Boot 项目
    SSH 克隆跟HTTP 克隆地址的区别
    Docker安装Gitlab-runner
    Docker方式安装Jenkins并且插件更改国内源
    使用docker-compose部署SonarQube
  • 原文地址:https://www.cnblogs.com/shaozhiqi/p/8830773.html
Copyright © 2011-2022 走看看