当前位置: 首页 > news >正文

现在的网站用什么程序做wordpress ajax error

现在的网站用什么程序做,wordpress ajax error,开发者选项在哪,如何做php网站建设Springbootmybatis-plusdynamic-datasourceDruid 多租户场景中多数据源自定义来源dynamic-datasource实现 文章目录 Springbootmybatis-plusdynamic-datasourceDruid 多租户场景中多数据源自定义来源dynamic-datasource实现0.前言1. 作者提供了接口2. 基于此接口的抽象类实现自…

Springboot+mybatis-plus+dynamic-datasource+Druid 多租户场景中多数据源自定义来源dynamic-datasource实现

文章目录

  • Springboot+mybatis-plus+dynamic-datasource+Druid 多租户场景中多数据源自定义来源dynamic-datasource实现
  • 0.前言
    • 1. 作者提供了接口
    • 2. 基于此接口的抽象类实现
    • 自定义负载均衡策略
    • 如何自定义
    • 多数据源懒启动配置
  • 3. 参考资料

0.前言

我们低代码平台是支持多租户的模式,用户在平台上配置了多数据源后,数据源会持久化到低代码的数据库中。多租户场景中多数据源自定义来源 是从数据库中通过查询数据源配置信息表,获取到数据库的链接信息和配置信息,然后利用 dynamic-datasource创建多数据源对象注入到容器里。
在这里插入图片描述

  <dependency><groupId>com.baomidou</groupId><artifactId>dynamic-datasource-spring-boot-starter</artifactId><version>${dynamic.datasource.version}</version></dependency>

1. 作者提供了接口

在这里插入图片描述

2. 基于此接口的抽象类实现

 @Beanpublic DynamicDataSourceProvider jdbcDynamicDatasourceProvider(DynamicDataSourceProperties properties) {// 获取Primary动态数据源Map<String, DataSourceProperty> datasourceMap = properties.getDatasource();DataSourceProperty masterDsProperty = datasourceMap.get(properties.getPrimary());// 从项目配置文件里配置的主数据源中DB加载要多租户的数据源。我们主要用在低代码场景return new AbstractJdbcDataSourceProvider(masterDsProperty.getDriverClassName(),masterDsProperty.getUrl(), masterDsProperty.getUsername(), masterDsProperty.getPassword()) {@Overrideprotected Map<String, DataSourceProperty> executeStmt(Statement statement) {Map<String, DataSourceProperty> dataSourcePropertiesMap = null;ResultSet rs = null;try {dataSourcePropertiesMap = new HashMap<>();// DbConstant.DS_DB_SQL 为查询数据库中配置的多租户的数据源配置信息的SQL如// "SELECT * FROM DATABASE_CONFIG "rs = statement.executeQuery(DbConstant.DS_DB_SQL);while (rs.next()) {DataSourceProperty property = new DataSourceProperty();String databaseCode = rs.getString(DbConstant.DatabaseConfigField.DATABASE_CODE);property.setDriverClassName(rs.getString(DbConstant.DatabaseConfigField.DRIVER_CLASS));property.setUrl(rs.getString(DbConstant.DatabaseConfigField.DATABASE_URL));property.setUsername(rs.getString(DbConstant.DatabaseConfigField.USER_NAME));property.setPassword(AESUtil.decrypt(rs.getString(DbConstant.DatabaseConfigField.USER_PASSWORD)));property.setLazy(DS_DATASOURCE_LAZY);// 设置Druid配置String druidConfig = rs.getString(DbConstant.DatabaseConfigField.DRUID_CONFIG);property.setDruid(getDruidConfig(druidConfig));dataSourcePropertiesMap.put(databaseCode, property);}} catch (SQLException e) {log.error("查询DB数据源配置异常", e);} finally {try {if (rs != null) {rs.close();}} catch (SQLException e) {log.error("数据库ResultSet资源释放异常", e);}try {statement.close();} catch (SQLException e) {log.error("数据库Statement资源释放异常", e);}}log.info(">>>初始化加载DB库中数据源完成");return dataSourcePropertiesMap;}};}

自定义负载均衡策略

如下图slave组下有三个数据源,当用户使用slave切换数据源时会使用负载均衡算法。

系统自带了两个负载均衡算法

LoadBalanceDynamicDataSourceStrategy 轮询,是默认的。
RandomDynamicDataSourceStrategy 随机的。

spring:datasource:dynamic:datasource:master:username: sapassword: ""url: jdbc:h2:mem:testdriver-class-name: org.h2.Driverschema: db/schema.sqlslave_1:username: sapassword: ""url: jdbc:h2:mem:testdriver-class-name: org.h2.Driverslave_2:username: sapassword: ""url: jdbc:h2:mem:testdriver-class-name: org.h2.Driverslave_3:username: sapassword: ""url: jdbc:h2:mem:testdriver-class-name: org.h2.Driverstrategy: com.baomidou.dynamic.datasource.strategy.LoadBalanceDynamicDataSourceStrategy

如何自定义

如果默认的两个都不能满足要求,可以参考源码自定义。 暂时只能全局更改。

import java.util.List;
import java.util.concurrent.ThreadLocalRandom;
import javax.sql.DataSource;public class RandomDynamicDataSourceStrategy implements DynamicDataSourceStrategy {public RandomDynamicDataSourceStrategy() {}public DataSource determineDataSource(List<DataSource> dataSources) {return (DataSource)dataSources.get(ThreadLocalRandom.current().nextInt(dataSources.size()));}
}

多数据源懒启动配置

懒启动:连接池创建出来后并不会立即初始化连接池,等需要使用connection的时候再初始化。

暂时只支持Druid和HikariCp和BeeCp连接池。

主要场景可能适合于数据源很多,又不需要启动立即初始化的情况,可以减少系统启动时间。

缺点在于,如果参数配置有误,则启动的时候不知道,初始化的时候失败,可能一直抛异常。

配置使用

spring:datasource:dynamic:primary: master #设置默认的数据源或者数据源组,默认值即为masterstrict: false #设置严格模式,默认false不启动. 启动后在未匹配到指定数据源时候会抛出异常,不启动则使用默认数据源.lazy: true #默认false非懒启动,系统加载到数据源立即初始化连接池datasource:master:url: jdbc:mysql://xx.xx.xx.xx:3306/dynamicusername: rootpassword: 123456driver-class-name: com.mysql.jdbc.Driverlazy: true #表示这个数据源懒启动db1:url: jdbc:mysql://xx.xx.xx.xx:3307/dynamicusername: rootpassword: 123456driver-class-name: com.mysql.jdbc.Driverdb2:url: jdbc:mysql://xx.xx.xx.xx:3307/dynamicusername: rootpassword: 123456driver-class-name: com.mysql.jdbc.Driver

3. 参考资料

从3.4.0开始,可以注入多个DynamicDataSourceProvider的Bean以实现同时从多个不同来源加载数据源,注意同名会被覆盖。

  1. dynamic-datasource GitHub 仓库 ↗:dynamic-datasource 的官方 GitHub 仓库,包含源代码、文档和示例等资源。
http://www.yayakq.cn/news/832170/

相关文章:

  • 自己建个网站需要什么免费网络电话呼叫系统
  • 中国十大网站建设江苏做网站的公司
  • 企业网站前期建设方案案例银川 网站制作
  • 广告公司会建设网站吗国外哪些网站做产品推广比较好
  • 自己做企业网站服务器西安千秋网络科技有限公司
  • 网站的四大要素故事网站模版
  • 网站备案流程2016网上推广平台app
  • 国外免费舆情网站有哪些软件大型网站技术架构 pdf
  • 微信开放平台网站应用wordpress如何修改主题名称
  • 影响网站pr的因素有哪些苏州房产网
  • 工程建设业主官方网站WordPress支持外链图片
  • 网站定制开发要多久浙江专业网页设计免费建站
  • 网站建设中需要注意的问题免费产品发布推广
  • 福建省港航建设发展有限公司网站点击出字插件wordpress
  • 郑州网站建设索q479185700对网站建设提建议
  • 网站建设合同付款比例免费建站网站一级大录像不卡在线看网页
  • 常州做网站包括哪些中文网站 可以做谷歌推广吗
  • 织梦怎么做手机网站做网站技术路线
  • 山东中佛龙建设有限公司网站wordpress5置顶
  • 网站建设 html5怎么做消费信贷网站
  • 东莞网站建设培训杭州市建设信用网官网
  • 北京网站优化哪家好西安注册公司在哪个网站系统
  • 海南建设教育执业网站长沙市建站
  • 利用淘宝做网站卖货到国外天津专业网站制作设计
  • 织梦网站模板响应式网站建设对数据库有何要求
  • 新河镇网站制作eclipse开发微网站开发
  • 优惠建网站企业网站设计步骤
  • 企业建设网站的目标网站开发 网络后台维护作用
  • iis如何做网站企业网站建设的服务类型有哪些
  • 苏州网站设计网站搭建建设自己公司的网站首页