环境:springboot 2.1.4

数据源引入方式

  • 数据源一
@Configuration
@EnableTransactionManagement
@EnableJpaRepositories(
entityManagerFactoryRef = "entityManagerFactoryPrimary",
transactionManagerRef = "transactionManagerPrimary",
basePackages = {"com.xxj.primary.repository"}
)
public class SourceDataConfig { @Autowired
private HibernateProperties hibernateProperties; @Autowired
private JpaProperties jpaProperties; private Map<String, Object> getVendorProperties() {
return hibernateProperties.determineHibernateProperties(
jpaProperties.getProperties(), new HibernateSettings()
);
} @Bean(name = "primaryDataSource")
@ConfigurationProperties(prefix = "spring.datasource.primary") # 配置数据源获取的涞源
public DataSource primaryDataSource(){
return DataSourceBuilder.create().build();
} @Bean(name = "entityManagerFactoryPrimary")
public LocalContainerEntityManagerFactoryBean entityManagerFactoryBean(EntityManagerFactoryBuilder builder, @Qualifier("primaryDataSource") DataSource dataSource) {
return builder.dataSource(dataSource)
.properties(getVendorProperties())
.packages("com.xxj.primary.model")
.persistenceUnit("primaryPersistenceUnit")
.build();
} @Bean(name = "transactionManagerPrimary")
public PlatformTransactionManager propertyTransactionManager(
@Qualifier("entityManagerFactoryPrimary") EntityManagerFactory propertyEntityManagerFactory) {
return new JpaTransactionManager(propertyEntityManagerFactory);
}
}
  • 数据源二
@Configuration
@EnableTransactionManagement
@EnableJpaRepositories(
entityManagerFactoryRef = "entityManagerFactorySecond",
transactionManagerRef = "transactionManagerSecond",
basePackages = {"com.xxj.second.repository"}
)
public class SecondDataConfig { @Autowired
private HibernateProperties hibernateProperties; @Autowired
private JpaProperties jpaProperties; private Map<String, Object> getVendorProperties() {
Map<String, Object> map = hibernateProperties.determineHibernateProperties(
jpaProperties.getProperties(), new HibernateSettings());return map;
} @Primary
@Bean(name = "secondDataSource")
@ConfigurationProperties(prefix = "spring.datasource.second")
public DataSource targetDataSource(){
return DataSourceBuilder.create().build();
} @Primary
@Bean(name = "entityManagerFactorySecond")
public LocalContainerEntityManagerFactoryBean entityManagerFactoryBean(EntityManagerFactoryBuilder builder, @Qualifier("secondDataSource") DataSource dataSource) {
return builder.dataSource(dataSource)
.properties(getVendorProperties())
.packages("com.xxj.second.model")
.persistenceUnit("targetPersistenceUnit")
.build();
} @Primary
@Bean(name = "transactionManagerSecond")
public PlatformTransactionManager propertyTransactionManager(
@Qualifier("entityManagerFactorySecond") EntityManagerFactory propertyEntityManagerFactory) {
return new JpaTransactionManager(propertyEntityManagerFactory);
}
}

数据源配置

spring.datasource.primary.jdbc-url = jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull&serverTimezone=Asia/Shanghai&useSSL=false&requireSSL=false
spring.datasource.primary.username = root
spring.datasource.primary.password = 1234567
spring.datasource.primary.driver-class-name = com.mysql.jdbc.Driver spring.datasource.second.jdbc-url = jdbc:mysql://localhost:3306/test2?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull&serverTimezone=Asia/Shanghai&useSSL=false&rewriteBatchedStatements=true
spring.datasource.second.username = root
spring.datasource.second.password = 1234567
spring.datasource.second.driver-class-name = com.mysql.jdbc.Driver

springboot 2.x版本jpa多数据源引入跟1.x版本有些不太一样,还需要额外注意。

  1. 获取jpa配置的方式
  2. 数据源配置为jdbc-url

要注意:packages不能引用相同的model,否则会导致数据库卡死。

最新文章

  1. 对git的理解及常用指令
  2. EasyUI的DataGrid 打印导出
  3. php部分---面向对象,设计模式(单例模式、工厂模式)、oop六大原则;
  4. Windows下zlib库和libPng库的编译和使用
  5. RS485接线 - 为什么要给2线制RS485接3根线?
  6. application(CURD)--easyui
  7. Git联系oschina托管代码版本号
  8. css 8.1
  9. django学习过程中知识点小结
  10. TP框架自带的正则验证的规则
  11. .32-浅析webpack源码之doResolve事件流(4)
  12. BZOJ 4259: 残缺的字符串 [FFT]
  13. ELK 5.5.0 安装
  14. Swagger2使用参考
  15. Appium1.9 之 Chromedriver安装方式
  16. DB2序列和主键自增长
  17. 只用最适合的! 全面对比主流 .NET 报表控件:水晶报表、FastReport、ActiveReports 和 Stimulsoft
  18. ComboBox赋值ItemsSource数据源的时候会触发SelectionChanged改变事件的解决办法
  19. redux的一些插件总结(redux-actions,reselect)
  20. $微信小程序开发实践点滴——接入Bmob后端云

热门文章

  1. ArrayList、Vector、LinkedList的区别
  2. 解决Google Chrome浏览器字体模糊的问题
  3. python 进程与线程 精要
  4. 8.Struts2拦截器
  5. 酷狗mac版如何新建歌单?酷狗mac版收藏歌单方法
  6. Unity 2018 version class.jar path
  7. NX二次开发-UFUN修剪体UF_MODL_trim_body
  8. NX二次开发-UFUN拾取平面对话框UF_UI_specify_plane
  9. NX二次开发-获取UG界面窗口句柄UF_UI_get_default_parent
  10. js 彻底理解回调函数