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

网站建设飠金手指排名十五做搜索网站能发财吗

网站建设飠金手指排名十五,做搜索网站能发财吗,做网站的服务器有哪些,合肥搜索引擎推广在Spring Boot中实现动态数据源主要涉及到创建和管理不同的数据源,并在运行时根据需要切换。这可以通过编程方式配置Spring的AbstractRoutingDataSource来完成。下面我会逐步介绍如何实现动态数据源,并给出代码示例。 第1步:添加依赖 首先&…

在Spring Boot中实现动态数据源主要涉及到创建和管理不同的数据源,并在运行时根据需要切换。这可以通过编程方式配置Spring的AbstractRoutingDataSource来完成。下面我会逐步介绍如何实现动态数据源,并给出代码示例。

第1步:添加依赖

首先,你需要在pom.xml文件中添加Spring Boot和数据库相关的依赖。以MySQL为例,你需要添加以下依赖:

<dependencies><!-- Spring Boot Starter Data JPA --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-jpa</artifactId></dependency><!-- MySQL Connector --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><scope>runtime</scope></dependency><!-- Spring Boot Starter Web --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency>
</dependencies>

第2步:配置数据源

创建一个配置类来配置多个数据源。首先,定义每个数据源的配置,并使用Spring的@ConfigurationProperties来绑定配置属性。

@Configuration
public class DataSourceConfig {@Bean@ConfigurationProperties("app.datasource.master")public DataSource masterDataSource() {return DataSourceBuilder.create().build();}@Bean@ConfigurationProperties("app.datasource.slave")public DataSource slaveDataSource() {return DataSourceBuilder.create().build();}@Primary@Beanpublic DataSource dynamicDataSource() {Map<Object, Object> targetDataSources = new HashMap<>();targetDataSources.put("master", masterDataSource());targetDataSources.put("slave", slaveDataSource());RoutingDataSource routingDataSource = new RoutingDataSource();routingDataSource.setDefaultTargetDataSource(masterDataSource());routingDataSource.setTargetDataSources(targetDataSources);return routingDataSource;}
}

第3步:实现AbstractRoutingDataSource

接下来,你需要实现AbstractRoutingDataSource,以便根据当前上下文确定应使用哪个数据源。

public class RoutingDataSource extends AbstractRoutingDataSource {@Overrideprotected Object determineCurrentLookupKey() {return DataSourceContext.getCurrentDataSource();}
}

第4步:上下文持有器

创建一个DataSourceContext类来持有当前请求的数据源标识。

public class DataSourceContext {private static final ThreadLocal<String> contextHolder = new ThreadLocal<>();public static void setCurrentDataSource(String dataSourceType) {contextHolder.set(dataSourceType);}public static String getCurrentDataSource() {return contextHolder.get();}public static void clear() {contextHolder.remove();}
}

第5步:使用切面来切换数据源

你可以使用Spring AOP在方法执行前动态切换数据源。下面是一个示例:

@Aspect
@Component
public class DataSourceAspect {@Before("@annotation(targetDataSource)")public void switchDataSource(TargetDataSource targetDataSource) {DataSourceContext.setCurrentDataSource(targetDataSource.value());}@After("@annotation(targetDataSource)")public void restoreDataSource(TargetDataSource targetDataSource) {DataSourceContext.clear();}
}

其中TargetDataSource是一个自定义注解,用来在方法上标记需要切换的数据源。

@Target({ ElementType.METHOD, ElementType.TYPE })
@Retention(RetentionPolicy.RUNTIME)
public @interface TargetDataSource {String value();
}

第6步:配置application.properties

application.properties中配置你的数据源:

app.datasource.master.jdbc-url=jdbc:mysql://localhost:3306/masterdb
app.datasource.master.username=root
app.datasource.master.password=passapp.datasource.slave.jdbc-url=jdbc:mysql://localhost:3306/slavedb
app.datasource.slave.username=root
app.datasource.slave.password=pass

通过以上步骤,你可以在Spring Boot应用中实现动态数据源,根据不同的需求切换到不同的数据库。这种方式特别适合于读写分离和多租户场景。

7、补充

实际使用中,偏业务的代码往往是根据业务相关ID做计算后放入DataSourceContext数据的,也就是同一个Method,不同的租户/用户使用的数据源可能是不一样的,这才更符合多租户系统的需求。而偏功能的系统,它的Method才有可能是固定的数据源(注解指定)。因此多租户的系统请求过来,我们可以通过在过滤器或者全局拦截器里计算值,然后写数据。

http://www.15wanjia.com/news/164292.html

相关文章:

  • 商城网站支付端怎么做怎么把自己的网站放到百度搜索上
  • 江西网站做的好的企业wordpress功能插件
  • 做微信的网站秀客甘孜州手机网站建设
  • 网站的备案号网站建设外包质量进度跟进
  • 泉州网站建设哪里优惠佛山网站搜索优化
  • 湖南微信网站公司南山区公司网站制作
  • 四川手机响应式网站建设设计北京网络营销推广公司
  • 网站怎做百度代码统计手机网站的建设价格
  • 网上提交报名表系统的网站建设运营seo是什么意思
  • 手机网站首页布局设计多媒体制作专业学什么
  • 浙江建设集团网站首页定制制作网站开发
  • 重庆网站建设制作设计公司南昌做网站开发的公司哪家好
  • 青岛建设网站制作创建一个网页多少钱
  • 淄博网站建设优化运营渠道分销管理系统
  • 网站开发技术 下载现在推广用什么平台
  • 网站报备流程中国航空港建设总公司网站
  • 丰都网站建设案例网上宣传广告怎么做
  • 优化网站入口页面的四个维度可以推广发广告的app
  • 网站html地图怎么做的贵阳建筑公司网站建设
  • 国外自助建站免费建站平台房地产网站案例
  • 宝安网站建设seo信科创建手机网站模版
  • wordpress多本小说站出售菏泽网站建设菏泽
  • 长春火车站属于哪个区win主机 wordpress
  • 重庆做网站 外包公司贵州省城乡和住房建设厅网站首页
  • 不备案的网站能上去吗南通科技网站建设
  • 滨州网站设计备案ip 查询网站
  • 广州在线网站制作提供网站备案信息
  • 我做网站如何分流客户南山区住房和建设局官方网站
  • 为网站做安全认证服务万网网站建设方案书 备案
  • 合肥做网站的的公司有哪些直播软件有哪些