Spring Boot系列之八 多数据源配置整体介绍

简介


前面两章在介绍Spring Boot整合MyBatis的时候简单的看了一下Spring Boot如何去配置单一的数据源.并没有详细的单独去看数据源的配置.

本文就简要介绍下在Spring Boot中对内置内存数据库H2,多数据源等的配置.

由于本文档的代码基本都是基于MyBatis搭建,所以关于Spring-Data-JPA的内容并不能展示出来,Spring Boot中对于Repository/Dao的设计并不能完美的体现出来,不过,各个持久层框架自有它自己的好处,无所谓谁坏谁差,还是要看我们具体怎么去应用。

对内置内存数据库的支持

基于Spring Boot的自动化配置,其实我们也仅仅需要在pom.xml文件中引入我们想使用的内置内存数据库的jar依赖即可。Spring Boot会自动扫描classpath下是否有某个jar包,如果有,就加载默认配置。

  • pom.xml引入依赖

基于mybatis的配置:

Spring Boot系列之八 多数据源配置整体介绍_第1张图片

使用内置内存数据库需要引入`spring-jdbc`,其在`mybatis-spring-boot-starter`已经包含。

实际使用过程中,因为内置的内存数据库并不能保留表结构,所以,如果使用JPA就需要在配置文件中将ddl语句设置为`spring.jpa.hibernate.ddl-auto=create`.

如果使用mybatis,我们也可以在application.yml或者application.properties配置schema:db/xx.sql来执行数据库初始化的sql文件.

使用生产数据库

  • ### Spring Boot自动配置对数据库连接池的选择原则:

  • 优先选择使用Tomcat的数据库连接池

  • 如果存在HikariCP,则启用

  • 如果存在Commons DBCP,则启用

  • 如果存在Commons DBCP2,则启用

按照官方文档的说法,我们在引入`mybatis-spring-boot-starter`其实已经引入了`tomcat-jdbc`的依赖,也就使用了tomcat的数据库连接池。

当然我们也可以配置自己的数据库连接池,比如配置阿里爸爸的`Druid`来作为我们的数据库连接池工具

Spring Boot系列之八 多数据源配置整体介绍_第2张图片

使用JDBC

请看: https://github.com/sunshineasbefore/veryjava.spring.boot/tree/master/jdbc

两个数据源的配置

  • 最基本的配置

Spring Boot系列之八 多数据源配置整体介绍_第3张图片

进阶

今天多说一点就是,两个数据源分别针对不同的包下的mapper文件:

  • JDBCDataSourceConfig

Spring Boot系列之八 多数据源配置整体介绍_第4张图片

  • SSABDataSourceConfig

Spring Boot系列之八 多数据源配置整体介绍_第5张图片

  • 对比这两个类,其不同点在于

  • @MapperScan的扫描路径不一致,这个的用处主要在于用不同的包区分不同数据源对于数据的操作.

  • @ConfigurationProperties的prefix不一致,这个用来区分不同的数据源.

  • JDBCDataSourceConfig类中的dataSource()多了一个@Primary注解,指定某一个dataSource为主要的datasource.

代码

本文限于篇幅原因,不能展示所有的代码,如果想要完整的代码示例,请移步 https://github.com/sunshineasbefore/veryjava.spring.boot/tree/master/datasources

支持请点赞,不喜勿喷.

每天一点点,成长多一点.

你可能感兴趣的:(Spring Boot系列之八 多数据源配置整体介绍)