Public CMS二次开发过程,如何使用多个数据源

简介: Public CMS二次开发过程,如何使用多个数据源

Public CMS集成多个数据源很简单,只需要按照以下几步操作:

   1. 修改ApplicationConfig.dataSource方法增加other

1

2

3

4

5

6

7

8

9

10

11

    @Bean

    public DataSource dataSource() throws PropertyVetoException {

        CmsDataSource bean = new CmsDataSource(getDirPath(CommonConstants.BLANK) + CmsDataSource.DATABASE_CONFIG_FILENAME);

        try {

            bean.put("other", CmsDataSource

                    .initDataSource(CmsDataSource.loadDatabaseConfig(getDirPath(CommonConstants.BLANK) + "other.properties")));

        catch (IOException e) {

        }

        CmsDataSource.initDefautlDataSource();

        return bean;

    }

2. 在操作数据库,并开启事务前切换数据源

1

CmsDataSource.setDataSourceName("other");

3. 在访问数据库完毕应该还原数据源

1

CmsDataSource.resetDataSourceName();

具体原理就是继承并实现了框架的数据源路由类,使用线程变量来存储当前数据源名称,还原数据源也是把线程变量还原,防止后续其他任务读取到被污染的线程变量

相关文章
|
前端开发
基于RuoYi-Flowable-Plus的若依ruoyi-nbcio支持自定义业务表单流程(一)
基于RuoYi-Flowable-Plus的若依ruoyi-nbcio支持自定义业务表单流程(一)
396 1
|
前端开发
基于RuoYi-Flowable-Plus的若依ruoyi-nbcio支持自定义业务表单流程(四)
基于RuoYi-Flowable-Plus的若依ruoyi-nbcio支持自定义业务表单流程(四)
341 1
基于RuoYi-Flowable-Plus的若依ruoyi-nbcio支持自定义业务表单流程(四)
|
前端开发 JavaScript
【最全最详细】publiccms实现将公共部分提取成单独模块引入
【最全最详细】publiccms实现将公共部分提取成单独模块引入
|
4天前
|
云安全 人工智能 安全
AI被攻击怎么办?
阿里云提供 AI 全栈安全能力,其中对网络攻击的主动识别、智能阻断与快速响应构成其核心防线,依托原生安全防护为客户筑牢免疫屏障。
|
14天前
|
域名解析 人工智能
【实操攻略】手把手教学,免费领取.CN域名
即日起至2025年12月31日,购买万小智AI建站或云·企业官网,每单可免费领1个.CN域名首年!跟我了解领取攻略吧~
|
8天前
|
安全 Java Android开发
深度解析 Android 崩溃捕获原理及从崩溃到归因的闭环实践
崩溃堆栈全是 a.b.c?Native 错误查不到行号?本文详解 Android 崩溃采集全链路原理,教你如何把“天书”变“说明书”。RUM SDK 已支持一键接入。
572 211
|
4天前
|
编解码 Linux 数据安全/隐私保护
教程分享免费视频压缩软件,免费视频压缩,视频压缩免费,附压缩方法及学习教程
教程分享免费视频压缩软件,免费视频压缩,视频压缩免费,附压缩方法及学习教程
229 138
|
存储 人工智能 监控
从代码生成到自主决策:打造一个Coding驱动的“自我编程”Agent
本文介绍了一种基于LLM的“自我编程”Agent系统,通过代码驱动实现复杂逻辑。该Agent以Python为执行引擎,结合Py4j实现Java与Python交互,支持多工具调用、记忆分层与上下文工程,具备感知、认知、表达、自我评估等能力模块,目标是打造可进化的“1.5线”智能助手。
811 59