zoukankan      html  css  js  c++  java
  • multiple datasource config

    Hi Harshit S.

    project structure:

    multiple datasource config as follows:

    step 1:

     

    step 2:add a datasource configuration class

    @Configuration
    public class DataSourceConfig {
        // ape datasource config
        @Value("${spring.ape-datasource.driver-class-name}")
        private String apeDriverClassName;
    
        @Value("${spring.ape-datasource.url}")
        private String apeDBUrl;
    
        @Value("${spring.ape-datasource.username}")
        private String apeDBUsername;
    
        @Value("${spring.ape-datasource.password}")
        private String apeDBPassword;
    
        // DBQ datasource config
        @Value("${spring.dbq-datasource.url}")
        private String dbqDBUrl;
    
        @Value("${spring.dbq-datasource.username}")
        private String dbqDBUsername;
    
        @Value("${spring.dbq-datasource.password}")
        private String dbqDBPassword;
    
        @Value("${spring.dbq-datasource.driver-class-name}")
        private String dbqDriverClassName;
    
        @Primary
        @Bean(name = "apeDataSource")
        @Qualifier("apeDataSource")
        public DataSource apeDataSource() {
            HikariDataSource dataSource = new HikariDataSource();
            dataSource.setPoolName("ape pool");
            dataSource.setDriverClassName(apeDriverClassName);
            dataSource.setJdbcUrl(apeDBUrl);
            dataSource.setUsername(apeDBUsername);
            dataSource.setPassword(apeDBPassword);
            dataSource.setAutoCommit(true);
            dataSource.setMaximumPoolSize(20);
            return dataSource;
        }
    
        @Bean(name = "dbqDataSource")
        @Qualifier("dbqDataSource")
        public DataSource dbqDataSource() {
            HikariDataSource dataSource = new HikariDataSource();
            dataSource.setPoolName("DBQ pool");
            dataSource.setDriverClassName(dbqDriverClassName);
            dataSource.setJdbcUrl(dbqDBUrl);
            dataSource.setUsername(dbqDBUsername);
            dataSource.setPassword(dbqDBPassword);
            dataSource.setAutoCommit(true);
            dataSource.setMaximumPoolSize(20);
            return dataSource;
        }
    
    }

     Step3: add Jpa config class

    @Configuration
    @EnableTransactionManagement
    @EnableJpaRepositories(
            entityManagerFactoryRef = "apeManagerFactory",
            transactionManagerRef = "apeTransactionManager",
            basePackages = {"com.cn.ano2ape.repository.ape"}
    )
    public class ApeJpaConfig {
        @Autowired
        @Qualifier("apeDataSource")
        private DataSource apeDataSource;
    
        @Autowired
        private JpaProperties jpaProperties;
    
        @Autowired
        private HibernateProperties hibernateProperties;
    
        @Primary
        @Bean(name = "apeEntityManager")
        public EntityManager entityManager(EntityManagerFactoryBuilder builder) {
            return apexaEntityManagerFactory(builder).getObject().createEntityManager();
        }
    
        @Primary
        @Bean(name = "apeManagerFactory")
        public LocalContainerEntityManagerFactoryBean apexaEntityManagerFactory(EntityManagerFactoryBuilder builder) {
            Map<String, Object> properties = hibernateProperties.determineHibernateProperties(jpaProperties.getProperties(), new HibernateSettings());
            return builder.dataSource(apeDataSource).properties(properties).packages("com.cn.ano2ape.model.ape").build();
        }
    
        @Primary
        @Bean(name = "apeTransactionManager")
        PlatformTransactionManager apexaTransactionManager(EntityManagerFactoryBuilder builder) {
            return new JpaTransactionManager(apexaEntityManagerFactory(builder).getObject());
        }
    }
    @Configuration
    @EnableTransactionManagement
    @EnableJpaRepositories(
            entityManagerFactoryRef = "dbqManagerFactory",
            transactionManagerRef = "dbqTransactionManager",
            basePackages = {"com.cn.ano2ape.repository.dbq"}
    )
    public class DbqJpaConfig {
        @Autowired
        @Qualifier("dbqDataSource")
        private DataSource dbqDataSource;
    
        @Autowired
        private JpaProperties jpaProperties;
    
        @Autowired
        private HibernateProperties hibernateProperties;
    
        @Bean(name = "dbqEntityManager")
        public EntityManager entityManager(EntityManagerFactoryBuilder builder) {
            return dbqEntityManagerFactory(builder).getObject().createEntityManager();
        }
    
        @Bean(name = "dbqManagerFactory")
        public LocalContainerEntityManagerFactoryBean dbqEntityManagerFactory(EntityManagerFactoryBuilder builder) {
            Map<String, Object> properties = hibernateProperties.determineHibernateProperties(jpaProperties.getProperties(), new HibernateSettings());
            return builder.dataSource(dbqDataSource).properties(properties).packages("com.cn.ano2ape.model.dbq").build();
        }
    
        @Bean(name = "dbqTransactionManager")
        PlatformTransactionManager dbqTransactionManager(EntityManagerFactoryBuilder builder) {
            return new JpaTransactionManager(dbqEntityManagerFactory(builder).getObject());
        }
    }

    end.

  • 相关阅读:
    jsp与spring mvc后台controller间参数传递处理之总结
    又一个无效的列类型错误Error setting null for parameter #7 with JdbcType NULL . Try setting a different JdbcType for this parameter or a different jdbcTypeForNull configuration property. Cause: java.sql.SQLExcept
    SSM文件上传要点总结
    关于SSM中mybatis向oracle添加语句采用序列自增的问题
    oracle和mysql的一些区别
    mapper.xml实现oracle的分页语句
    2.数组的解构赋值
    3.Vue 实例
    2.Vue.js 是什么
    1. vue 的安装
  • 原文地址:https://www.cnblogs.com/kcher90/p/12067508.html
Copyright © 2011-2022 走看看