java - Spring Boot 在多个数据库(数据源)之间切换
问题描述
我有一个用于具有 2 个不同设置(=2 个不同 jars)的项目的 spring boot REST API 应用程序。两者都需要实现,但我不知道如何做到这一点或最好的方法是什么。
两种设置都需要与在线数据库(在服务器上;AWS)建立连接,并与离线或本地数据库(在机器/PC 本身上运行)建立连接。两种设置之间的不同之处在于离线或本地连接。
设置 1:
当应用程序启动时,它需要连接到在线数据库。当发生错误或与在线数据库的连接丢失时,需要连接到离线/本地数据库。
发生错误或连接丢失后,它不需要重新连接在线数据库。
设置 2:
当应用程序启动时,它需要连接到在线和离线数据库。因此,当用户向 REST API 发帖时,在线和离线数据库都需要更新(除非发生错误或与在线数据库的连接丢失)。如果用户只是做一个get请求,最好从在线数据库中获取数据,除非发生错误或者与在线数据库的连接丢失,否则它可以使用离线数据库。
发生错误或连接丢失后,它不需要重新连接在线数据库,但在此设置中会很好。再次建立连接后同步数据也不是必需的(但可能是一个不错的功能)。
我看过一个类似的帖子,其中解决方案是使用 ha-jdbc 但它是一个旧帖子......当我尝试将它添加到我的 pom.xml 文件时,Maven 只是找不到依赖项。
经过更多的搜索和尝试,我能够将 ha-jdbc 添加到我的 pom.xml 中。我必须做的是添加一个包含 ha-jdbc 的存储库。
<project>
<repositories>
<repository>
<id>jbossrepository</id>
<name>jbossrepository</name>
<url>https://repository.jboss.org/nexus/content/repositories/thirdparty-releases/</url>
</repository>
</repositories>
<dependency>
<dependency>
<groupId>net.sf.ha-jdbc</groupId>
<artifactId>ha-jdbc</artifactId>
<version>3.0.3</version>
</dependency>
</dependency>
</project>
然而,看看我是否可以让它工作,如果它是我正在寻找的......
ha-jdbc 不值得尝试,一个接一个的错误或问题,它也只是旧的 java ......
版本:
- java:1.8
- org.springframework.boot(spring-boot-starter-parent):2.1.8.RELEASE
- 数据库(在线和离线):PostgreSQL 11.5
解决方案
看看这个示例代码。在那里您可以找到已经实施的有效解决方案。它背后的逻辑是EnableJpaRepositories
基于包 ( basePackages
)
推荐阅读
- intellij-idea - IntelliJ 检查在更新到 2021.1 后不起作用
- linux - Apache/Linux - 以 root 身份部署网站?
- visual-studio-code - VSCode 是否可以配置为添加自定义“|” 在 Rust 中使用闭包时(管道)匹配?
- scala - Seq[Any] 上的 scala 中的模式匹配
- oracle - 使用HiLo EF Core 5 设置值到前一个
- amcharts4 - 3d列amcharts如何在较大值前面制作较小的值
- aws-api-gateway - 通过其域名调用 API 网关
- html - Bootstrap 4 轮播 - d-md-flex align-items-md-center 刹车 col 宽度
- java - 如何在应用程序运行时检测 sqlite 文件替换?
- python - Pandas 在推断 dtypes 时改变值