如何在spring配置多个数据源
发布网友
发布时间:2022-04-23 14:36
我来回答
共3个回答
懂视网
时间:2022-05-03 14:10
方法,此方法主要返回AbstractRoutingDataSource抽象类的多数据源的Key值
提醒:这里主要提醒一下,Spring Aop(AspectJ实现)的拦截方法,@Before@After注解之类的方法的参数可以具有一个 org.aspectj.lang.JoinPoint 类型的形参,而@Around类需要是ProceedingJoinPoint此形参,不要混用(官方说明来源:https://docs.spring.io/spring/docs/5.2.6.RELEASE/spring-framework-reference/core.html#aop-ataspectj-advice-params)
首先展示下配置文件:application.yml
spring:
datasource:
one:
username: root
password: root
jdbc-url: jdbc:mariadb://localhost:3306/myschool
driver-class-name: org.mariadb.jdbc.Driver
two:
username: root
password: root
jdbc-url: jdbc:mariadb://localhost:3306/myschool
driver-class-name: org.mariadb.jdbc.Driver
配置多个数据源:
@Bean(value = "db1")
@ConfigurationProperties(prefix = "spring.datasource.one")
public HikariDataSource dataSource() {
HikariDataSource dataSource = new HikariDataSource();
return dataSource;
}
@Bean(value = "db2")
@ConfigurationProperties(prefix = "spring.datasource.two")
public HikariDataSource dataSource2() {
HikariDataSource dataSource = new HikariDataSource();
return dataSource;
}
下面是多数据源的配置:
动态数据源实现如下:
获取数据源的目标位置:DataSourceTransactionManager类的doBegin方法
具体可以下载Demo试试:https://github.com/starSmallDream/MySpringDataJdbcAndMybatisByManyDataSource.git
SpringDataJdbc多数据源
标签:source href determine sch ref style github key lan
热心网友
时间:2022-05-03 11:18
给你一个例子:
context.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:jee="http://www.springframework.org/schema/jee"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/jee
http://www.springframework.org/schema/jee/spring-jee-2.0.xsd">
<jee:jndi-lookup id="mysqlds" jndi-name="java:comp/env/jdbc/mysqlds" />
<jee:jndi-lookup id="orads" jndi-name="java:comp/env/jdbc/orads" />
<bean id="dataSource" class="util.DynamicDataSource">
<property name="targetDataSources">
<map key-type="java.lang.String">
<entry key="0" value-ref="mysqlds" />
<entry key="1" value-ref="orads" />
</map>
</property>
<property name="defaultTargetDataSource" ref="orads" />
</bean>
</beans>
package util;
public class DbContextHolder {
private static final ThreadLocal contextHolder = new ThreadLocal();
public static void setDbType(String dbType) {
contextHolder.set(dbType);
}
public static String getDbType() {
return (String) contextHolder.get();
}
public static void clearDbType() {
contextHolder.remove();
}
}
package util;
import java.sql.SQLException;
import org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource;
public class DynamicDataSource extends AbstractRoutingDataSource {
//static Logger log = Logger.getLogger("DynamicDataSource");
@Override
protected Object determineCurrentLookupKey() {
// TODO
return DbContextHolder.getDbType();
}
@Override
public boolean isWrapperFor(Class<?> iface) throws SQLException {
// TODO Auto-generated method stub
return false;
}
@Override
public <T> T unwrap(Class<T> iface) throws SQLException {
// TODO Auto-generated method stub
return null;
}
}
测试程序:
DbContextHolder.setDbType("1");
UserDomain od = this.testService.queryUserAccount("admin");
System.out.println("username=="+od.getName());
DbContextHolder.setDbType("0");
d = this.testService.queryUserAccount("admin");
热心网友
时间:2022-05-03 12:36
配置两个SessionFactory
在DAO定义时指定sessionFactory
springboot+mybatis是如何配置多数据源的?
在Spring Boot中配置多数据源的步骤包括:首先,在pom.xml文件中引入Spring Boot Data JPA和MySQL的依赖。接下来,在application.properties或application.yml文件中配置两个数据源。创建两个数据源的配置类,使用@ConfigurationProperties注解将配置文件中的属性绑定到DataSource对象上。通过这种方式,你可以为应...
【微服务】Spring Boot 多数据源配置与实现详解
1. 多数据源基础 在单一系统中运用多个独立数据源,是Spring Boot默认配置之外的扩展。在实际业务场景中,多数据源配置变得尤为重要。2. 应用场景 读写分离:减少对单个数据库的压力,提高读取性能。 数据库分片:处理大量数据,提升存储和查询效率。 多租户:每个租户独立使用自己的数据源,保...
Spring动态配置多数据源基于spring和ibatis的多数据源切换方案_百度知 ...
在使用ibatis时,管理多个数据源曾是一项复杂任务,每次增加一个数据源就需要额外的sql-map-config配置文件,这无疑增加了维护的难度。然而,借助Spring框架,我们可以轻松地解决这个问题,其中Spring的AbstractRoutingDataSource是关键工具。AbstractRoutingDataSource是一个实现了javax.sql.DataSource接口的抽象类...
springboot多数据源配置(springboot多数据源配置和切换苞米豆)_百度知...
1、创建一个datasource包,新建DataSource1,DataSource2两个文件,通过注解来配置数据源 DataSource1: DataSource2: 2、在application.properties文件配置两个数据源 3、两个测试的ServiceMapper 4、Controller调用15《SpringBoot入门教程》多数据源与分布式事务 一个项目中使用多个数据源的需求,我们在日常工作中时常会遇到。
springboot+springJdbc+postgresql实现多数据源的配置
单个默认的,多个就要指定ConfigurationpublicclassTransactionConfig{@BeanpublicPlatformTransactionManagerbfscrmTransactionManager(@Qualifier("masterDataSource")DataSourcemasterDataSource){returnnewDataSourceTransactionManager(masterDataSource);}}这就配置好了多个数据源了。作者:董懂 ...
SpringBoot实现动态数据源配置
为了实现多数据源并自动切换,我们需要了解SpringBoot自动配置的原理。在此之前,我们通常使用单数据源,而现在需要搞懂动态数据源,就必须先搞懂自动配置。现在,我们要实现多数据源,并能够自动切换。例如,查询A时连接行云数据库,查询B时连接OceanBase数据库。由于不能使用DataSourceAutoConfiguration,我们...
如何在spring框架中解决多数据源的问题
我首先想到在spring的applicationContext中配置所有的dataSource。这些dataSource可能是各种不同类型的,比如不同的数据库:Oracle、SQL Server、MySQL等,也可能是不同的数据源:比如apache 提供的org.apache.commons.dbcp.BasicDataSource、spring提供的org.springframework.jndi.JndiObjectFactoryBean等。然后...
Spring boot + druid + mybatis-plus 支持多数据源的系列问题说明
引入多数据源以满足业务需求,如主备数据库结构,减轻主数据库压力,将高负载查询移至备份库处理。具体改造如下:无需修改pom.xml文件,原架构引用即可。在application.properties配置中,修改数据库连接信息,以适应多个数据源。主启动类调整以排除自动启动。创建对应配置类,配置多数据源连接。改造后,服务...
Spring+Mybatis多数据源切换
首先,修改jdbc.properties文件以配置多数据源信息。接着,在mybatis.xml文件中,适配数据源配置。创建DynamicDataSource类,继承自AbstractRoutingDataSource,实现动态数据源切换功能。随后,创建DynamicDataSourceHolder类,用于管理当前数据源。调用DynamicDataSourceHolder.setDbType()方法即可切换数据源。在使用...
Spring Boot(十二):MyBatis-Plus的多数据源和分页
1、pom.xml配置 在pom.xml中增加MyBatis-Plus多数据源依赖:2、配置文件配置 在配置文件application.yml中配置我们需要连接的数据库:blog和user,默认为blog 3、启动类配置 在@SpringBootApplication注解上增加exclude = DruidDataSourceAutoConfigure.class配置:这个配置的作用是去掉对DruidDataSource...