springboot 设置多数据源以及动态切换数据源
场景我们springboot项目,通常会有多个数据库,比方mysql,vertica,postgresql等等数据库,通常我们须要动态切换使用我们想要的数据库,这时间就须要设置多数据源了
多数据源特性
支持多数据库范例:比方,同时毗连 MySQL、PostgreSQL 和 Vertica 等差异数据库,在应用中可以大概根据差异的业务需求切换到对应的数据库。
动态数据源切换:根据哀求、业务逻辑或用户上下文,动态切换数据源(比方,按用户哀求切换到差异的数据库),而不须要重启应用。
数据库隔离:差异业务模块使用差异的数据源,确保它们的数据完全隔离。比方,一个模块使用 MySQL,另一个模块使用 Vertica。
高可用和容错:通过设置多个数据源,可以在主数据库发生故障时自动切换到备用数据库,提升体系的高可用性。
实现
基于springboot3.4设置
引入依靠的方式
添加依靠
<!--动态数据源-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>dynamic-datasource-spring-boot-starter</artifactId>
<version>4.3.0</version>
</dependency>
设置YML文件
spring:
datasource:
dynamic:
# 设置默认的数据源或者数据源组,默认值即为 master
primary: master
datasource:
master:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/test?serverTimezone=UTC&characterEncoding=utf8&useUnicode=true&useSSL=false
username: root
password: 123456
slave:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/eshopping?serverTimezone=UTC&characterEncoding=utf8&useUnicode=true&useSSL=false
username: root
password: 123456
调用数据库
直接再类上加上@DS(“master”)注解便是毗连的master数据库
@Service
@DS("master")
public class LoginServiceImpl implements LoginService{
题目
博主这里遇见了题目,由于我设置了JWT+SpringSecurity,这里报错了,信息如下,找不到数据源,料想应该是和JwtAuthenticationFilter和数据源的加载序次有关
2025-01-21 21:43:37.097 ERROR --- [ main] o.s.b.web.embedded.tomcat.TomcatStarter: Error starting Tomcat context. Exception: org.springframework.beans.factory.UnsatisfiedDependencyException. Message: Error creating bean with name 'jwtAuthenticationFilter': Unsatisfied dependency expressed through field 'userDetailsService': Error creating bean with name 'customUserDetailsService': Unsatisfied dependency expressed through field 'loginMapper': Error creating bean with name 'loginMapper' defined in file : Cannot resolve reference
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页:
[1]