问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

如何在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...

spring配置多数据源 spring配置jndi数据源 springboot配置多数据源 spring配置双数据源 springboot不配置数据源 springboot配置双数据源 springboot多数据库配置 spring 多数据源 druid多数据源配置
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
...唱的.长头发,一边弹钢琴一边唱很温柔的情歌,反正那个男人的长... 2012年重大事件? c盘变成红色了,怎么清理啊 pet和pp有什么区别 公司辞退工伤员工怎么补偿 怎样提高我在理科的学习能力呢? 信息流广告投放平台都有哪些? worth哪个诗人 东方花映冢 ~ Phantasmagoria of Flower View.系统说明 CAD编辑窗口位置如何调? 私密照用手机照片恢复大师安全吗? spring 怎么实现注入多个数据源,并且可以同时使用这多个数据源 如何在spring框架中解决多数据源的问题 求日本恋爱动漫 谁知道毗湿奴是怎么来的吗?(我要详细的故事、要是有佛经举例就最好了) 拳皇200人人物包 恢复手机照片,哪个软件比较好用? mugen游戏下载 鲁格赛特被打败,究极生命体·塔尔塔罗斯登场,你怎么看? 大家快看拳皇最终BOOS不是大蛇!EVIL ASH(黑化阿修)绝对比大蛇强! 拳皇97大蛇出招表(详细)? mugen镜老(和针老是一伙的,相当与助手)的人物包,我急急急急!谁回答对了我追加! 求拳皇mugen bt人物包 求拳皇神大蛇人物包 斋祀和大蛇谁历害 什么是盖亚意识?或者说大蛇意识, 谁有mugen大天使、麦田大蛇、宇宙意志的人物包?跪求,有分! 帽子的英文? 天赦罪大蛇,宇宙意志大蛇,mugen人物包。 联通花呗红包在哪里看呀? Spring动态配置多数据源的简介 照片恢复软件会不会泄露隐私? Spring怎样高效的配置多套数据源 安全可靠的手机图片恢复软件 cad已经画好的图怎么改比例? Spring动态配置多数据源的介绍 如何在一个Spring工程下使用多数据源配置的改进实现 如何在spring框架中解决多数据源的问题(2) 用CAD画好图后怎样保存? spring如何生成带事务的多数据源 CAD画好实体图后如何在.. 多数据源 spring怎么管理事务的 CAD中画好了图怎么打印出来图很小呢? springboot整合多数据源 spring 最多可以配多少个数据源 cad画好的图怎样打印 CAD图画好后怎样分图层 软件测试中覆盖是什么意思 等价类划分的等价类划分的方法 多个等价类时覆盖一个无效等价类时其他有效等价类需要满足吗