spring boot 项目多数据源的创建

本贴最后更新于 2427 天前,其中的信息可能已经物是人非

spring boot 项目多数据源的创建:

第一步:搭建 spring boot 工程,在这里使用的是 idea 这个软件,

首先:搭建一个 waven 工程

1png

其次:创建完 maven 工程之后,需要将其转换为 spring boot 工程,在 pom.xml 文件中引入对应的 springboot 工程的包,
2png

我这里的是 MAVEN 的聚合工程,大家只需关心 springboot 所需要的包即可。

最后:创建 springboot 的启动类

3png

第二步:由于业务需求需要三个数据源

需要配置三个数据源的配置类,

HisDsConfig,PeisSqlConfig,RisDsConfig

这三个配置类,都精确到 mapper 目录,以便跟其他数据源隔离

HisDsConfig:

package com.jfsoft.conf; import com.alibaba.druid.pool.DruidDataSource; import org.apache.ibatis.session.SqlSessionFactory; import org.mybatis.spring.SqlSessionFactoryBean; import org.mybatis.spring.annotation.MapperScan; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.core.io.support.PathMatchingResourcePatternResolver; import org.springframework.jdbc.datasource.DataSourceTransactionManager; import javax.sql.DataSource; @Configuration @MapperScan(basePackages = HisDsConfig.PACKAGE, sqlSessionFactoryRef = "hisSqlSessionFactory") public class HisDsConfig { static final String PACKAGE = "com.jfsoft.dao.view.his"; static final String MAPPER_LOCATION = "com.jfsoft.dao.view.his.*.xml"; @Value("${spring.datasource.his.url}") private String url; @Value("${spring.datasource.his.username}") private String user; @Value("${spring.datasource.his.password}") private String password; @Value("${spring.datasource.his.driver-class-name}") private String driverClass; @Bean(name = "hisDataSource") @Qualifier public DataSource hisDataSource() { DruidDataSource dataSource = new DruidDataSource(); dataSource.setDriverClassName(driverClass); dataSource.setUrl(url); dataSource.setUsername(user); dataSource.setPassword(password); return dataSource; } @Bean(name = "hisTransactionManager") @Qualifier public DataSourceTransactionManager hisTransactionManager() { return new DataSourceTransactionManager(hisDataSource()); } @Bean(name = "hisSqlSessionFactory") @Qualifier public SqlSessionFactory hisSqlSessionFactory(@Qualifier("hisDataSource") DataSource hisDataSource) throws Exception { final SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean(); sessionFactory.setDataSource(hisDataSource); sessionFactory.setMapperLocations(new PathMatchingResourcePatternResolver() .getResources(HisDsConfig.MAPPER_LOCATION)); return sessionFactory.getObject(); } }

PeisSqlConfig:

package com.jfsoft.conf; import com.alibaba.druid.pool.DruidDataSource; import org.apache.ibatis.session.SqlSessionFactory; import org.mybatis.spring.SqlSessionFactoryBean; import org.mybatis.spring.annotation.MapperScan; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.core.io.support.PathMatchingResourcePatternResolver; import org.springframework.jdbc.datasource.DataSourceTransactionManager; import javax.sql.DataSource; @Configuration @MapperScan(basePackages = PeisSqlConfig.PACKAGE, sqlSessionFactoryRef = "peisSqlSessionFactory") public class PeisSqlConfig { static final String PACKAGE = "com.jfsoft.dao.view.peis"; static final String MAPPER_LOCATION = "com.jfsoft.dao.view.peis.*.xml"; @Value("${spring.datasource.peis.url}") private String url; @Value("${spring.datasource.peis.username}") private String user; @Value("${spring.datasource.peis.password}") private String password; @Value("${spring.datasource.peis.driver-class-name}") private String driverClass; @Bean(name = "peisDataSource") @Qualifier public DataSource peisDataSource() { DruidDataSource dataSource = new DruidDataSource(); dataSource.setDriverClassName(driverClass); dataSource.setUrl(url); dataSource.setUsername(user); dataSource.setPassword(password); return dataSource; } @Bean(name = "peisTransactionManager") @Qualifier public DataSourceTransactionManager peisTransactionManager() { return new DataSourceTransactionManager(peisDataSource()); } @Bean(name = "peisSqlSessionFactory") @Qualifier public SqlSessionFactory peisSqlSessionFactory(@Qualifier("peisDataSource") DataSource peisDataSource) throws Exception { final SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean(); sessionFactory.setDataSource(peisDataSource); sessionFactory.setMapperLocations(new PathMatchingResourcePatternResolver() .getResources(PeisSqlConfig.MAPPER_LOCATION)); return sessionFactory.getObject(); } }

RisDsConfig:

package com.jfsoft.conf; import com.alibaba.druid.pool.DruidDataSource; import org.apache.ibatis.session.SqlSessionFactory; import org.mybatis.spring.SqlSessionFactoryBean; import org.mybatis.spring.annotation.MapperScan; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.core.io.support.PathMatchingResourcePatternResolver; import org.springframework.jdbc.datasource.DataSourceTransactionManager; import javax.sql.DataSource; @Configuration @MapperScan(basePackages = HisDsConfig.PACKAGE, sqlSessionFactoryRef = "hisSqlSessionFactory") public class HisDsConfig { static final String PACKAGE = "com.jfsoft.dao.view.his"; static final String MAPPER_LOCATION = "com.jfsoft.dao.view.his.*.xml"; @Value("${spring.datasource.his.url}") private String url; @Value("${spring.datasource.his.username}") private String user; @Value("${spring.datasource.his.password}") private String password; @Value("${spring.datasource.his.driver-class-name}") private String driverClass; @Bean(name = "hisDataSource") @Qualifier public DataSource hisDataSource() { DruidDataSource dataSource = new DruidDataSource(); dataSource.setDriverClassName(driverClass); dataSource.setUrl(url); dataSource.setUsername(user); dataSource.setPassword(password); return dataSource; } @Bean(name = "hisTransactionManager") @Qualifier public DataSourceTransactionManager hisTransactionManager() { return new DataSourceTransactionManager(hisDataSource()); } @Bean(name = "hisSqlSessionFactory") @Qualifier public SqlSessionFactory hisSqlSessionFactory(@Qualifier("hisDataSource") DataSource hisDataSource) throws Exception { final SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean(); sessionFactory.setDataSource(hisDataSource); sessionFactory.setMapperLocations(new PathMatchingResourcePatternResolver() .getResources(HisDsConfig.MAPPER_LOCATION)); return sessionFactory.getObject(); } }

在 application.yml 配置文件中配置三个数据源

spring: datasource: ris: url: jdbc:oracle:thin:@10.0.2.200:1521:orcl driver-class-name: oracle.jdbc.driver.OracleDriver username: ris password: 123456 peis: url: jdbc:sqlserver://localhost:1433;DatabaseName=xxxxx driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver username: ris password: 123456 his: url: jdbc:oracle:thin:@10.0.2.70:1521:orcl driver-class-name: oracle.jdbc.driver.OracleDriver username: ris password: 123456

第三步:测试结果

将 his 数据源中的内容,插入到 ris 数据库中。测试成功!

  • MyBatis

    MyBatis 本是 Apache 软件基金会 的一个开源项目 iBatis,2010 年这个项目由 Apache 软件基金会迁移到了 google code,并且改名为 MyBatis ,2013 年 11 月再次迁移到了 GitHub。

    173 引用 • 414 回帖 • 360 关注
  • Java

    Java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由 Sun Microsystems 公司于 1995 年 5 月推出的。Java 技术具有卓越的通用性、高效性、平台移植性和安全性。

    3203 引用 • 8217 回帖 • 1 关注
  • Spring

    Spring 是一个开源框架,是于 2003 年兴起的一个轻量级的 Java 开发框架,由 Rod Johnson 在其著作《Expert One-On-One J2EE Development and Design》中阐述的部分理念和原型衍生而来。它是为了解决企业应用开发的复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许使用者选择使用哪一个组件,同时为 JavaEE 应用程序开发提供集成的框架。

    948 引用 • 1460 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...

推荐标签 标签

  • ZooKeeper

    ZooKeeper 是一个分布式的,开放源码的分布式应用程序协调服务,是 Google 的 Chubby 一个开源的实现,是 Hadoop 和 HBase 的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。

    61 引用 • 29 回帖 • 7 关注
  • V2Ray
    1 引用 • 15 回帖 • 5 关注
  • HHKB

    HHKB 是富士通的 Happy Hacking 系列电容键盘。电容键盘即无接点静电电容式键盘(Capacitive Keyboard)。

    5 引用 • 74 回帖 • 523 关注
  • frp

    frp 是一个可用于内网穿透的高性能的反向代理应用,支持 TCP、UDP、 HTTP 和 HTTPS 协议。

    17 引用 • 7 回帖 • 2 关注
  • etcd

    etcd 是一个分布式、高可用的 key-value 数据存储,专门用于在分布式系统中保存关键数据。

    6 引用 • 26 回帖 • 544 关注
  • IDEA

    IDEA 全称 IntelliJ IDEA,是一款 Java 语言开发的集成环境,在业界被公认为最好的 Java 开发工具之一。IDEA 是 JetBrains 公司的产品,这家公司总部位于捷克共和国的首都布拉格,开发人员以严谨著称的东欧程序员为主。

    181 引用 • 400 回帖 • 1 关注
  • Excel
    31 引用 • 28 回帖
  • Anytype
    3 引用 • 31 回帖 • 28 关注
  • OpenShift

    红帽提供的 PaaS 云,支持多种编程语言,为开发人员提供了更为灵活的框架、存储选择。

    14 引用 • 20 回帖 • 663 关注
  • 尊园地产

    昆明尊园房地产经纪有限公司,即:Kunming Zunyuan Property Agency Company Limited(简称“尊园地产”)于 2007 年 6 月开始筹备,2007 年 8 月 18 日正式成立,注册资本 200 万元,公司性质为股份经纪有限公司,主营业务为:代租、代售、代办产权过户、办理银行按揭、担保、抵押、评估等。

    1 引用 • 22 回帖 • 799 关注
  • 工具

    子曰:“工欲善其事,必先利其器。”

    301 引用 • 768 回帖
  • Markdown

    Markdown 是一种轻量级标记语言,用户可使用纯文本编辑器来排版文档,最终通过 Markdown 引擎将文档转换为所需格式(比如 HTML、PDF 等)。

    172 引用 • 1543 回帖
  • CSDN

    CSDN (Chinese Software Developer Network) 创立于 1999 年,是中国的 IT 社区和服务平台,为中国的软件开发者和 IT 从业者提供知识传播、职业发展、软件开发等全生命周期服务,满足他们在职业发展中学习及共享知识和信息、建立职业发展社交圈、通过软件开发实现技术商业化等刚性需求。

    14 引用 • 155 回帖
  • CodeMirror
    2 引用 • 17 回帖 • 175 关注
  • MongoDB

    MongoDB(来自于英文单词“Humongous”,中文含义为“庞大”)是一个基于分布式文件存储的数据库,由 C++ 语言编写。旨在为应用提供可扩展的高性能数据存储解决方案。MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似 JSON 的 BSON 格式,因此可以存储比较复杂的数据类型。

    91 引用 • 59 回帖 • 1 关注
  • Spark

    Spark 是 UC Berkeley AMP lab 所开源的类 Hadoop MapReduce 的通用并行框架。Spark 拥有 Hadoop MapReduce 所具有的优点;但不同于 MapReduce 的是 Job 中间输出结果可以保存在内存中,从而不再需要读写 HDFS,因此 Spark 能更好地适用于数据挖掘与机器学习等需要迭代的 MapReduce 的算法。

    74 引用 • 46 回帖 • 564 关注
  • Typecho

    Typecho 是一款博客程序,它在 GPLv2 许可证下发行,基于 PHP 构建,可以运行在各种平台上,支持多种数据库(MySQL、PostgreSQL、SQLite)。

    12 引用 • 67 回帖 • 445 关注
  • Postman

    Postman 是一款简单好用的 HTTP API 调试工具。

    4 引用 • 3 回帖 • 3 关注
  • BookxNote

    BookxNote 是一款全新的电子书学习工具,助力您的学习与思考,让您的大脑更高效的记忆。

    笔记整理交给我,一心只读圣贤书。

    1 引用 • 1 回帖 • 1 关注
  • Laravel

    Laravel 是一套简洁、优雅的 PHP Web 开发框架。它采用 MVC 设计,是一款崇尚开发效率的全栈框架。

    19 引用 • 23 回帖 • 742 关注
  • 叶归
    14 引用 • 62 回帖 • 24 关注
  • jsDelivr

    jsDelivr 是一个开源的 CDN 服务,可为 npm 包、GitHub 仓库提供免费、快速并且可靠的全球 CDN 加速服务。

    5 引用 • 31 回帖 • 108 关注
  • 又拍云

    又拍云是国内领先的 CDN 服务提供商,国家工信部认证通过的“可信云”,乌云众测平台认证的“安全云”,为移动时代的创业者提供新一代的 CDN 加速服务。

    20 引用 • 37 回帖 • 572 关注
  • TensorFlow

    TensorFlow 是一个采用数据流图(data flow graphs),用于数值计算的开源软件库。节点(Nodes)在图中表示数学操作,图中的线(edges)则表示在节点间相互联系的多维数据数组,即张量(tensor)。

    20 引用 • 19 回帖 • 5 关注
  • 开源中国

    开源中国是目前中国最大的开源技术社区。传播开源的理念,推广开源项目,为 IT 开发者提供了一个发现、使用、并交流开源技术的平台。目前开源中国社区已收录超过两万款开源软件。

    7 引用 • 86 回帖
  • Swagger

    Swagger 是一款非常流行的 API 开发工具,它遵循 OpenAPI Specification(这是一种通用的、和编程语言无关的 API 描述规范)。Swagger 贯穿整个 API 生命周期,如 API 的设计、编写文档、测试和部署。

    26 引用 • 35 回帖 • 1 关注
  • 导航

    各种网址链接、内容导航。

    45 引用 • 177 回帖