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

建h5网站费用新鸿儒做网站

建h5网站费用,新鸿儒做网站,数字营销培训,专业的深圳电商app开发Spring Boot 中 Druid 连接池与多数据源切换的方法 在Spring Boot项目中#xff0c;使用Druid连接池和进行多数据源切换是常见的需求#xff0c;尤其是在需要读写分离、数据库分片等复杂场景下。本文将详细介绍如何在Spring Boot中配置Druid连接池并实现多数据源切换。 一、…Spring Boot 中 Druid 连接池与多数据源切换的方法 在Spring Boot项目中使用Druid连接池和进行多数据源切换是常见的需求尤其是在需要读写分离、数据库分片等复杂场景下。本文将详细介绍如何在Spring Boot中配置Druid连接池并实现多数据源切换。 一、Druid连接池简介 Druid是阿里巴巴开源的一个数据库连接池它不仅提供了高效的数据库连接管理还具备监控、扩展等强大功能。Druid的主要特点包括 监控能力提供了详细的监控页面可以实时监控SQL执行情况、连接池状态等。扩展能力支持多种数据库类型并且可以通过插件机制进行扩展。高效性能通过一系列优化手段提高了连接池的性能和稳定性。 二、Spring Boot中配置Druid连接池 在Spring Boot中配置Druid连接池相对简单只需在pom.xml中添加相应的依赖并在application.yml或application.properties中进行配置即可。 1. 添加依赖 在pom.xml中添加Druid和Spring Boot Starter JDBC的依赖 dependencies!-- Druid连接池依赖 --dependencygroupIdcom.alibaba/groupIdartifactIddruid-spring-boot-starter/artifactIdversion1.2.6/version/dependency!-- Spring Boot Starter JDBC依赖 --dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-jdbc/artifactId/dependency!-- MySQL驱动依赖 --dependencygroupIdmysql/groupIdartifactIdmysql-connector-java/artifactIdscoperuntime/scope/dependency!-- 其他依赖 -- /dependencies2. 配置数据源 在application.yml或application.properties中配置数据源信息。例如在application.yml中 spring:datasource:type: com.alibaba.druid.pool.DruidDataSourcedriver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://127.0.0.1:3306/db01?serverTimezoneUTCuseUnicodetruecharacterEncodingUTF8useSSLfalseusername: rootpassword: 123456initial-size: 1min-idle: 1max-active: 20test-on-borrow: true# Druid其他配置druid:validation-query: SELECT 1 FROM DUALtest-while-idle: truetime-between-eviction-runs-millis: 60000min-evictable-idle-time-millis: 300000pool-prepared-statements: truemax-pool-prepared-statement-per-connection-size: 20stat-view-servlet:enabled: trueurl-pattern: /druid/*filter:stat:log-slow-sql: trueslow-sql-millis: 2000三、多数据源切换的实现 在Spring Boot中实现多数据源切换可以通过继承AbstractRoutingDataSource类来实现。AbstractRoutingDataSource是Spring提供的一个抽象类用于支持动态数据源切换。 1. 引入必要的依赖 除了Druid和Spring Boot Starter JDBC的依赖外还需要引入MyBatis相关的依赖如果项目使用MyBatis dependencygroupIdorg.mybatis.spring.boot/groupIdartifactIdmybatis-spring-boot-starter/artifactIdversion2.2.1/version /dependency2. 配置多数据源 在application.yml中配置多个数据源的信息例如 spring:datasource:type: com.alibaba.druid.pool.DruidDataSourcedatasource1:url: jdbc:mysql://127.0.0.1:3306/db01?serverTimezoneUTCuseUnicodetruecharacterEncodingUTF8useSSLfalseusername: rootpassword: 123456initial-size: 1min-idle: 1max-active: 20test-on-borrow: truedriver-class-name: com.mysql.cj.jdbc.Driverdatasource2:url: jdbc:mysql://127.0.0.1:3306/db02?serverTimezoneUTCuseUnicodetruecharacterEncodingUTF8useSSLfalseusername: rootpassword: 123456initial-size: 1min-idle: 1max-active: 20test-on-borrow: truedriver-class-name: com.mysql.cj.jdbc.Driverdatasource3:url: jdbc:mysql://127.0.0.1:3306/db03?serverTimezoneUTCuseUnicodetruecharacterEncodingUTF8useSSLfalseusername: rootpassword: 123456initial-size: 1min-idle: 1max-active: 20test-on-borrow: truedriver-class-name: com.mysql.cj.jdbc.Driver3. 创建数据源配置类 创建数据源配置类将每个数据源配置为Bean并自动管理它们 import com.alibaba.druid.pool.DruidDataSource; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.jdbc.datasource.DataSourceTransactionManager;import javax.sql.DataSource;Configuration public class DynamicDataSourceConfig {BeanConfigurationProperties(prefix spring.datasource.datasource1)public DataSource dataSource1() {return DruidDataSourceBuilder.create().build();}BeanConfigurationProperties(prefix spring.datasource.datasource2)public DataSource dataSource2() {return DruidDataSourceBuilder.create().build();}BeanConfigurationProperties(prefix spring.datasource.datasource3)public DataSource dataSource3() {return DruidDataSourceBuilder.create().build();}Beanpublic DataSourceTransactionManager dataSourceTransactionManager1(Qualifier(dataSource1) DataSource dataSource1) {DataSourceTransactionManager dataSourceTransactionManager new DataSourceTransactionManager();dataSourceTransactionManager.setDataSource(dataSource1);return dataSourceTransactionManager;}Beanpublic DataSourceTransactionManager dataSourceTransactionManager2(Qualifier(dataSource2) DataSource dataSource2) {DataSourceTransactionManager dataSourceTransactionManager new DataSourceTransactionManager();dataSourceTransactionManager.setDataSource(dataSource2);return dataSourceTransactionManager;}// 同理可以创建dataSourceTransactionManager3等 }4. 创建数据源上下文持有者 使用ThreadLocal维护当前线程的数据源信息 public class DataSourceContextHolder {private static final ThreadLocalString HOLDER new InheritableThreadLocal();public static void setDataSource(String key) {HOLDER.set(key);}public static String getDataSource() {return HOLDER.get();}public static void clearDataSource() {HOLDER.remove();} }5. 创建动态数据源类 创建动态数据源类继承AbstractRoutingDataSource import org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource;import javax.sql.DataSource; import java.util.HashMap; import java.util.Map;public class DynamicDataSource extends AbstractRoutingDataSource {private static final MapObject, Object TARGET_DATA_SOURCES new HashMap();static {// 将多个数据源添加到TARGET_DATA_SOURCES中TARGET_DATA_SOURCES.put(ds1, dataSource1());TARGET_DATA_SOURCES.put(ds2, dataSource2());TARGET_DATA_SOURCES.put(ds3, dataSource3());}public DynamicDataSource() {super.setDefaultTargetDataSource(dataSource1());super.setTargetDataSources(TARGET_DATA_SOURCES);super.afterPropertiesSet();}Override
http://www.hkea.cn/news/14322003/

相关文章:

  • 北京正规网站建设经历网页制作教程第二版
  • 嘉兴网站搭建金诺网站建设
  • 城乡与建设厅网站首页大型购物网站有哪些
  • 如何优化网站打开速度门户网站建站流程
  • 自己做网站赚钱案例网站可以做哪些广告语
  • 企业网站有哪些内容企业策划 企业网站建设 品牌设计
  • c mvc网站开发wordpress 托管是什么
  • 网站做优化有必要吗完整网站源码asp
  • 如何查看网站服务器西安云英网站建设
  • 网站搜索引擎推广怎么做做网站好看的背景图片
  • 做汽车配件招聘网站网站权重下降原因
  • 织梦网站模板该怎么跟程序员谈做网站
  • 湖南网站建设公司 要上磐石网络wordpress 表单支付
  • html5 手机 网站医疗器械网上采购平台
  • 企业建网站费用应用商店官方下载
  • 凡科网站网站建设进不去建德网站seo
  • 一个门户网站怎么做md5(wordpress)
  • 好公司网站建设如何设置多个首页wordpress
  • 静海集团网站建设无锡网站广优化公司
  • 坊网站建设做汽车租赁主要的网站
  • 网站建设费属于广宣费吗WORDPRESS添加全屏幻灯片
  • 青龙建站教程网站集约化建设
  • 淄博网站建设乐达推广html项目答辩
  • 网站建设主要问题及建议域名一级和二级的区别
  • 多个链接的网站怎么做的大数据分析
  • 主要的网站开发技术路线网站维护项目
  • 外贸建站优化推广pos机网站建设方案
  • ps怎么网站首页南昌网站建设冲浪者科技
  • 电站建设招聘网站百度平台投诉人工电话
  • 公司网站开发怎么做账淮北网站建设