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

无锡网站排名提升在线教育网站开发方案

无锡网站排名提升,在线教育网站开发方案,思睿鸿途北京网站建设,百度做网站吗Spring Boot中实现多数据源连接和切换的方案 在Spring Boot项目中#xff0c;随着业务需求的增长#xff0c;我们往往需要连接多个数据库#xff0c;即实现多数据源连接和切换。这种需求可能源于数据库的读写分离、微服务架构下的服务拆分、数据分库分表等场景。本文将详细…Spring Boot中实现多数据源连接和切换的方案 在Spring Boot项目中随着业务需求的增长我们往往需要连接多个数据库即实现多数据源连接和切换。这种需求可能源于数据库的读写分离、微服务架构下的服务拆分、数据分库分表等场景。本文将详细探讨Spring Boot中实现多数据源连接和切换的多种方案并给出相应的实现步骤和代码示例。 一、概述 在Spring Boot中实现多数据源连接和切换的方案有多种主要包括 使用AbstractRoutingDataSource实现动态数据源切换使用MP提供的Dynamic-datasource多数据源框架通过自定义注解在方法或类上指定数据源使用数据库代理中间件 每种方案都有其独特的优势和适用场景下面将分别进行详细阐述。 二、使用AbstractRoutingDataSource实现动态数据源切换 AbstractRoutingDataSource是Spring框架提供的一个抽象类用于根据用户定义的规则选择当前的数据源。通过继承这个类并实现其抽象方法determineCurrentLookupKey我们可以实现动态数据源切换。 步骤 定义数据源枚举用于标识不同的数据源。 public enum DataSourceType {MASTER(master),SLAVE(slave);private String value;DataSourceType(String value) {this.value value;}public String getValue() {return value;} }创建DynamicDataSource类继承AbstractRoutingDataSource并重写determineCurrentLookupKey方法。 public class DynamicDataSource extends AbstractRoutingDataSource {private static final ThreadLocalString CONTEXT_HOLDER new ThreadLocal();public DynamicDataSource(DataSource defaultTargetDataSource, MapObject, Object targetDataSources) {super.setDefaultTargetDataSource(defaultTargetDataSource);super.setTargetDataSources(targetDataSources);super.afterPropertiesSet();}Overrideprotected Object determineCurrentLookupKey() {return CONTEXT_HOLDER.get();}public static void setDataSourceType(String dataSource) {CONTEXT_HOLDER.set(dataSource);}public static String getDataSourceType() {return CONTEXT_HOLDER.get();}public static void clearDataSourceType() {CONTEXT_HOLDER.remove();} }配置数据源在Spring Boot的配置文件中配置多个数据源并在配置类中创建这些数据源将它们注入到DynamicDataSource中。 Configuration public class DataSourceConfig {BeanConfigurationProperties(prefix spring.datasource.master)public DataSource masterDataSource() {return DataSourceBuilder.create().build();}BeanConfigurationProperties(prefix spring.datasource.slave)public DataSource slaveDataSource() {return DataSourceBuilder.create().build();}Beanpublic DataSource dataSource() {MapObject, Object targetDataSources new HashMap();targetDataSources.put(DataSourceType.MASTER.getValue(), masterDataSource());targetDataSources.put(DataSourceType.SLAVE.getValue(), slaveDataSource());DynamicDataSource dataSource new DynamicDataSource(masterDataSource(), targetDataSources);return dataSource;} }使用AOP切换数据源通过自定义注解和AOP在方法执行前后切换数据源。 Aspect Component public class DataSourceAspect {Before(annotation(dataSource))public void changeDataSource(JoinPoint point, DataSource dataSource) {DynamicDataSource.setDataSourceType(dataSource.value());}After(annotation(dataSource))public void clearDataSource(JoinPoint point, DataSource dataSource) {DynamicDataSource.clearDataSourceType();} }自定义注解 Retention(RetentionPolicy.RUNTIME) Target({ElementType.METHOD, ElementType.TYPE}) public interface DataSource {DataSourceType value() default DataSourceType.MASTER; }在业务方法上使用注解 Service public class MyService {DataSource(DataSourceType.SLAVE)public void someMethod() {// 业务逻辑} }三、使用MP提供的Dynamic-datasource多数据源框架 MPMyBatis-Plus提供了Dynamic-datasource多数据源框架简化了多数据源的配置和管理。 步骤 引入依赖在pom.xml文件中添加Dynamic-datasource的依赖。 dependencygroupIdcom.baomidou/groupIdartifactIddynamic-datasource-spring-boot-starter/artifactIdversion最新版本/version /dependency配置数据源在application.yml或application.properties文件中配置多个数据源。 spring:datasource:dynamic:primary: master # 设置默认的数据源或者数据源组,默认值即为masterdatasource:master:url: jdbc:mysql://localhost:3306/master_dbusername: rootpassword: rootdriver-class-name: com.mysql.cj.jdbc.Driverslave:url: jdbc:mysql://localhost:3306/slave_dbusername: rootpassword: rootdriver-class-name: com.mysql.cj.jdbc.Driver使用注解或配置类指定数据源在业务方法或配置类上使用DS注解指定数据源。 Service public class MyService {DS(slave)public void someMethod() {// 业务逻辑} }四、通过自定义注解在方法或类上指定数据源 这种方案与使用AbstractRoutingDataSource实现动态数据源切换类似但更加灵活和直观。通过自定义注解我们可以直接在方法或类上指定使用哪个数据源。 步骤 定义数据源枚举和自定义注解同上。创建数据源上下文类同上。配置数据源同上。使用AOP切换数据源同上。在业务方法上使用注解同上。 五、使用数据库代理中间件 数据库代理中间件如Mycat、Sharding-JDBC等提供了更加灵活和强大的多数据源管理和分片功能。这些中间件通常支持读写分离、分库分表、数据聚合等功能可以大大简化多数据源的配置和管理。 步骤 选择并引入中间件根据业务需求选择合适的数据库代理中间件并在项目中引入相应的依赖。配置中间件在配置文件中配置中间件的相关参数如数据源、分片规则等。使用中间件通过中间件提供的接口或配置实现多数据源连接和切换。 六、总结 在Spring Boot中实现多数据源连接和切换的方案有多种每种方案都有其独特的优势和适用场景。使用AbstractRoutingDataSource实现动态数据源切换具有较高的灵活性和可控性使用MP提供的Dynamic-datasource多数据源框架可以简化配置和管理通过自定义注解在方法或类上指定数据源则更加直观和易用使用数据库代理中间件则提供了更加灵活和强大的多数据源管理和分片功能。在实际应用中我们可以根据业务需求和技术栈选择合适的方案以实现多数据源连接和切换。
http://www.dnsts.com.cn/news/69476.html

相关文章:

  • 网站百度权重怎么提升十大免费行情软件推荐
  • 网站建设系统怎么样怎么修改wordpress主题字体大小
  • 网站后台数据wordpress 阿里云虚拟主机
  • 专做和田玉的网站网站建设 ppt
  • 成都企业建设网站电话深圳宝安大型网站建设公司
  • 做网站低价有哪些推广平台
  • 做精神科医院网站费用营销网站模板
  • 网站外连金融行业网站建设
  • 网站建设课程心得体会浙江省住房建设局网站首页
  • 有没有做皮艺的网站python写网页
  • 网站设计 电子购物网站设计建设部人事教育司网站
  • 成都sw网站建设内容营销平台
  • 外贸做中英文网站企业网站欣赏
  • 建站宝盒东莞人才市场招聘信息2023
  • 西安苗木行业网站建设价格保定seo管理
  • 如何增加网站外链wordpress离线更新
  • 怎样暂停域名指向网站wordpress博客加相册
  • 成品ppt的网站免费观看足球网站模板下载
  • 佛山做网站公司哪家好wordpress 仪表盘美化
  • 网站的跳出率很高做的好微信商城网站吗
  • 谷歌seo专员seo工具
  • 国外比较好的建筑设计网站广东建设工程注册中心网站
  • 怎么做淘宝客手机网站推广北大青鸟网站建设课程
  • 自己做信息网站网页模板下载在线
  • 文化事业建设费在哪个网站申报融资平台哪家好
  • 网站推广在线推广网页设计思路说明200字
  • 制作卖东西网站新东方考研培训机构官网
  • 东莞公司网站怎么做自己做微信团购小程序
  • 青海专业网页设计免费建站做瞹瞹爱免费网站
  • 嘉兴做微网站的公司上海正规做网站公司电话