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.
multiple datasource config的更多相关文章
- jpa datasource config
application.properties spring.datasource.driverClassName= spring.datasource.url= spring.datasource.u ...
- MyBatis(3.2.3) - Configuring MyBatis using XML, Environment
The key component of MyBatis is SqlSessionFactory from which we get SqlSession and execute the mappe ...
- spring cloud 使用spring cloud bus自动刷新配置
Spring Cloud Bus提供了批量刷新配置的机制,它使用轻量级的消息代理(例如RabbitMQ.Kafka等)连接分布式系统的节点,这样就可以通过Spring Cloud Bus广播配置的变化 ...
- spring cloud config--client
概述 之前我们简单的搭建了一个单点的config-server服务,实现配置文件的统一管理,本次文章将实现config-client是如何从config-server中获取到统一配置文件信息的 1.创 ...
- spring cloud Config--server
概述 使用Config Server,您可以在所有环境中管理应用程序的外部属性.客户端和服务器上的概念映射与Spring Environment和PropertySource抽象相同,因此它们与Spr ...
- springboot动态多数据源切换
application-test.properties #datasource -- mysql multiple.datasource.master.url=jdbc:mysql://localho ...
- 六、spring boot 1.5.4 配置多数据源
spring boot 已经支持多数据源配置了,无需网上好多那些编写什么类的,特别麻烦,看看如下解决方案,官方的,放心! 1.首先定义数据源配置 #=====================multi ...
- Spring基础知识
Spring基础知识 利用spring完成松耦合 接口 public interface IOutputGenerator { public void generateOutput(); } 实现类 ...
- Spring PropertyPlaceholderConfigurer数据库配置
pom.xml中添加依赖 <!-- mysql-connector-java --> <dependency> <groupId>mysql</groupId ...
随机推荐
- WPF C# 字符串读写文件
WPF C# 字符串读写文件 public class 字符串读写文件 { /// <summary> /// Encoding.Unicode.GetString 如果使用Encodin ...
- python接口测试—mysql数据库操作
python操作mysql数据库 1.安装pymysql库 在python中安装pymysql第三方库,通过pip install pymysql 命令进行安装. 2.python操作mysql数据库 ...
- AIX中crontab和at 定时任务
1.crontab crontab文件用于在指定日期和时间周期性地执行作业 crontab 作业存放在/var/spool/cron/crontabs/$USER cron根据crontab文件项运行 ...
- Hive的架构(二)
02 Hive的架构 1.Hive的架构图 2.Hive的服务(角色) 1.用户访问接口 CLI(Command Line Interface):用户可以使用Hive自带的命令行接口执行Hive ...
- Python socket服务
套接字(socket)是一个抽象层,应用程序可以通过它发送或接收数据,可对其进行像对文件一样的打开.读写和关闭等操作. 1. 实现客户端发送字符,服务器返回大写的字符: 服务器: import soc ...
- vue2.0 笔记(杂记)
一.vue class.style表达式的类型: 字符串.对象和数组1.字符串 <div class="static" v-bind:class="class-a& ...
- git 与gitlab
1.gitlab 创建project ,命名为test2 2.git push项目 git remote add ******* mkdir test1 cd test1 git init nano ...
- sftp接口机上传脚本
sftp只要有秘钥,就不需要输入密码. #!/bin/bash #上传现在时间的前一小时的文件 date=`date -d -1hour +%Y%m%d` hour=`date -d -1hour + ...
- share point 下载语言包
可以选择对应语言 日文: https://www.microsoft.com/ja-JP/download/details.aspx?id=42546 中文: https://www.microsof ...
- 树莓派GPIO引脚标识图