• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

springboot如何配置多数据源

springboot 搞代码 4年前 (2022-01-09) 22次浏览 已收录 0个评论

摘要: 目前项目中持久化框架使用是mybatis,经过分析后不难发现,多数据源配置需要解决两个问题,一个是由原先的spring经典方式切换到了springboot方式下,多数据源如何配置?有无太大变化?另一个是怎样将多数据源与mybatis的配置关联起来?

前言

最近迫于项目需要,笔者踏上了springboot多数据源的配置之旅。之前笔者配置过spring的动态多数据源切换,当时使用的是JDBC Template。

目前项目中持久化框架使用是mybatis,经过分析后不难发现,多数据源配置需要解决两个问题,一个是由原先的spring经典方式切换到了springboot方式下,多数据源如何配置?有无太大变化?另一个是怎样将多数据源与mybatis的配置关联起来?

不妨先来看下,单数据源下mybatis如何配置的?

单数据源示例

首先要声明一点,项目只是依赖单个数据源时,如果你不介意springboot帮你做事的话,那么恭喜你,你省事儿了!你只需要在项目的属性文件中添加数据源的相关属性配置,springboot会“免费”提供给你一个数据源使用,默认采用的是tomcat jdbc connection pool。

当然你可以拒绝springboot的好意,如果你依赖第三方的连接池技术,你可以配置自己的数据源,那么springboot检测到你自己定义了DataSource后,就不会自动配置数据源了。

笔者不能拒绝springboot的好意,所以仅在项目的application.properties中添加了如下属性:

spring.datasource.url=jdbc:mysql://localhost:3306/testspring.datasource.username=rootspring.datasource.password=rootspring.datasource.driver-class-name=com.mysql.jdbc.Driverspring.datasource.max-idle=10spring.datasource.max-wait=10000spring.datasource.min-idle=5spring.datasource.initial-size=5spring.datasource.validation-query=SELECT 1spring.datasource.test-on-borrow=falsespring.datasource.test-while-idle=truespring.datasource.time-between-eviction-runs-millis=18800然后笔者创建了一个专门用于配置mybatis的类,如下:@Configurationpublic class MybatisSpringConfig {@Bean(name = "sqlSessionFactory")public SqlSessionFactory sqlSessionFactory(DataSource dataSource) throws Exception {SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();factoryBean.setDataSource(dataSource);factoryBean.setTypeAliasesPackage("demo.model");return factoryBean.getObject();}[[[@Bean](http://my.oschina.net/bean)](http://my.oschina.net/bean)](http://my.oschina.net/bean)public MapperScannerConfigurer mapperScannerConfigurer() {    MapperScannerConfigurer mapperScannerConfigurer = new MapperScannerConfigurer();    mapperScannerConfigurer.setBasePackage("demo.repository");    return mapperScannerConfigurer;}}

没错,mybatis在spring中就是可以通过如此的简练配置进而正常工作起来。你无需刻意地去创建mybatis的配置文件,无需刻意地去注册mapper接口及指定对应xml文件的位置,这完全得益于mybatis-spring,它就像一个“粘合剂”,可以很方便地将mybatis和spring“粘合”在一起。

MyBatis-Spring的配置步骤

不妨先来说下mybatis-spring配置的一般步骤:

  1. 配置数据源DataSource的Bean。

  2. 使用DataSource配置事务管理器。

  3. 使用DataSource配置SqlSessionFactory的Bean。

  4. 配置MapperScannerConfigurer的Bean。

这里要求配置事务管理器和SqlSessionFactory的数据源必须是同一个,否则事务管理不起作用。配置MapperScannerConfigurer的目的是自动扫描mapper接口所在的包,自动帮你将mapper接本文来源gaodai$ma#com搞$$代**码)网@口注册为Bean(代理生成接口的实现类),你就可以直接拿来依赖注入了,建议将mapper接口及其对应的xml文件放在同一个包下,这样的话你无需在SqlSessionFactory里指定xml文件的位置了。


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:springboot如何配置多数据源

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址