IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> springboot jpa 动态加载 追加 切换数据源 支持启动无数据源 -> 正文阅读

[Java知识库]springboot jpa 动态加载 追加 切换数据源 支持启动无数据源

LCCP-DYNAMICDB-STARTER

Springboot动态追加数据源
🚀 动态追加切换,线上灵活运行🚀

LCCP(lower-code-create-platform)是一系列的微服务和starter包的出包平台的简称

LCCP-DYNAMICDB-STARTER是针对springboot项目提供数据源的动态控制的包

目的是为了支持工具类型的服务在现场能够在界面动态的切换数据库。
场景一:

1. **证书许可服务**正常启动后,需要导入安装许可来对服务进行初始化;
2. 安装许可就包含了现场的**数据库信息**,导入安装许可后,该证书服务才能被初始化完毕。<br/>

技术栈

springboot 2.3.4

spring-data-jpa 2.3.4

一定要看清版本,hibernate4和5是不兼容的。

特点功能

对于后端

  • 数据源切换后,可以自由选择是否生成表;
  • 数据源添加和切换方式灵活,可在项目中定制数据源的切换方式和数据源的持久化方式;
  • 配置简单,引入该starter包 ,仅需在配置文件中配置即可进行简单配置即可;
  • 支持二次开发,拓展更多的数据库支持类型;

使用方式展示

引入包

<dependency>
  <groupId>com.sdt</groupId>
  <artifactId>lccp-dynamicdb-starter</artifactId>
  <version>0.0.1.0</version>
</dependency>

yml配置

spring:
  jpa:
    show-sql: true
    hibernate:
      ddl-auto: update
    properties:
      hibernate.naming.physical-strategy: org.hibernate.scripts.model.naming.PhysicalNamingStrategyStandardImpl

lccp:
  dynamic:
    datasource:
      enable: true
      dataSourceProvider: com.sdt.license.dynamic.provide.DynamicDataSourceProvider
      repositoryPath: com.sdt.license.*
      entityPath: com.sdt.license.*

和我们包相关的配置是spring.jpa下的配置和lccp下的配置。dynamic的配置是我们示例中持久化的位置。

启动类配置

@EnableTransactionManagement
@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class, HibernateJpaAutoConfiguration.class})

启动的时候排除掉数据库和orm的自动装配的类。

数据源提供

public class DynamicDataSourceProvider implements IDataSourceProvider {

    @Override
    public RegisterDbConnReq getDbInfo(ApplicationContext applicationContext) {

        RegisterDbConnReq dbEntity = new RegisterDbConnReq();
        // 省去业务逻辑,自定义的数据源提供类,没有则直接返回空的连接信息
        return dbEntity;
    }
}

只要实现IDataSourceProvider接口即可。

对外提供的数据源操作接口

public interface IDynamicDataSourceService {

    /**
     * 添加数据库信息
     *
     * @param req 数据库信息
     */
    void addDbInfo(RegisterDbConnReq req);

    /**
     * 切换数据源
     *
     * @param dbName 数据源切换
     */
    void switchDB(String dbName);

    /**
     * 查看当前的DB信息集合
     *
     * @return 当前的db信息
     */
    List<RegisterDbConnReq> viewDB();

    /**
     * 删除指定的数据源
     *
     * @param dbName 默认的数据源名称
     */
    void deleteDBInfo(String dbName);
}

如何使用的示例地址:

license-server · master · 史皓燃 / lccp-cloud · GitLab

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-05-13 11:38:35  更:2022-05-13 11:39:49 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 21:12:17-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码