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

创建建站分销系统设计

创建建站,分销系统设计,wordpress 搭建,c2c网站都有哪些switchRegion(切换地区)功能, 客户端可手动切换地区 , 查询不同的数据库, 后台根据地区切换数据库, 请求头添加region的key 配置类 import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.boot.jdbc.DataSourceBuilder; im…

switchRegion(切换地区)功能, 客户端可手动切换地区 , 查询不同的数据库, 后台根据地区切换数据库, 请求头添加region的key

配置类


import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.jdbc.DataSourceBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;import javax.sql.DataSource;
import java.util.HashMap;
import java.util.Map;/*** @author Wang*/
@Configuration
public class DynamicDataSourceConfig {@Bean@ConfigurationProperties(prefix = "spring.datasource.us")public DataSource usDataSource() {return DataSourceBuilder.create().build();}@Bean@ConfigurationProperties(prefix = "spring.datasource.ca")public DataSource caDataSource() {return DataSourceBuilder.create().build();}@Bean@ConfigurationProperties(prefix = "spring.datasource.other")public DataSource otherDataSource() {return DataSourceBuilder.create().build();}@Bean@Primarypublic DynamicDataSource dataSource(DataSource usDataSource, DataSource caDataSource, DataSource otherDataSource) {Map<Object, Object> targetDataSources = new HashMap<>(3);targetDataSources.put(DataSourceEnum.US.toString().toLowerCase(), usDataSource);targetDataSources.put(DataSourceEnum.CA.toString().toLowerCase(), caDataSource);targetDataSources.put(DataSourceEnum.OTHER.toString().toLowerCase(), otherDataSource);DynamicDataSource dynamicDataSource = new DynamicDataSource(usDataSource, targetDataSources);dynamicDataSource.afterPropertiesSet();return dynamicDataSource;}
}

import com.woodare.cdw.component.context.RequestContextHolder;
import org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource;import javax.sql.DataSource;
import java.util.Map;/*** @author Wang*/
public class DynamicDataSource extends AbstractRoutingDataSource {public DynamicDataSource(DataSource firstDataSource, Map<Object, Object> targetDataSources) {setDefaultTargetDataSource(firstDataSource);setTargetDataSources(targetDataSources);afterPropertiesSet();}@Overrideprotected Object determineCurrentLookupKey() {return RequestContextHolder.getRegion();}
}
public enum DataSourceEnum {/*** region*/US,CA,OTHER;
}

请求拦截器

import com.woodare.cdw.component.context.RequestContextHolder;
import com.woodare.cdw.core.HeaderCons;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.HandlerInterceptor;/*** @author Wang*/
public class RequestInterceptor implements HandlerInterceptor {@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) {String region = request.getHeader(HeaderCons.X_REGION);if (region != null) {RequestContextHolder.setRegion(region);}return true;}@Overridepublic void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) {RequestContextHolder.clearRegion();}
}

import com.woodare.cdw.interceptor.RequestInterceptor;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;/*** @author Wang*/
@Configuration
public class ResourceConfig implements WebMvcConfigurer {@Overridepublic void addInterceptors(InterceptorRegistry registry) {registry.addInterceptor(new RequestInterceptor());}
}

线程上下文

/*** @author Wang*/
public class RequestContextHolder {private RequestContextHolder(){}private static final ThreadLocal<String> REQUEST_HOLDER = new ThreadLocal<>();public static String getRegion() {return REQUEST_HOLDER.get();}public static void setRegion(String region) {REQUEST_HOLDER.set(region);}public static void clearRegion() {REQUEST_HOLDER.remove();}
}

application 配置

#jpa
spring.jpa.hibernate.ddl-auto=update
spring.jpa.database-platform=org.hibernate.dialect.PostgreSQLDialect
spring.jpa.show-sql=true# PostgreSQL
spring.datasource.us.jdbc-url=jdbc:postgresql://127.0.0.1:5432/cdw_us
spring.datasource.us.pool-name=cdw_us
spring.datasource.us.username=postgres
spring.datasource.us.password=123
spring.datasource.us.driver-class-name=org.postgresql.Driverspring.datasource.ca.jdbc-url=jdbc:postgresql://127.0.0.1:5432/cdw_ca
spring.datasource.ca.pool-name=cdw_ca
spring.datasource.ca.username=postgres
spring.datasource.ca.password=123
spring.datasource.ca.driver-class-name=org.postgresql.Driverspring.datasource.other.jdbc-url=jdbc:postgresql://127.0.0.1:5432/cdw_other
spring.datasource.other.pool-name=cdw_other
spring.datasource.other.username=postgres
spring.datasource.other.password=123
spring.datasource.other.driver-class-name=org.postgresql.Driver
http://www.yayakq.cn/news/289373/

相关文章:

  • 建立电子商务网站如何把网站做好
  • 石家庄兼职做网站做钢管的去什么网站发信息
  • 邳州建设局网站网站建设最低要求
  • 加强政务公开与网站建设如何优化网站性能
  • 广东网站定制wordpress只能传2m
  • 网站开发 工作量网站建设目标计划书
  • 本地的响应式网站建设抖音代运营服务方案
  • 网站建设概况兰州网站建站
  • wordpress建设的是模板网站吗上海大公司排名
  • 南通优普网站建设水果网站开发所需的成本
  • 饲料行业建设网站方案设计免费下载ppt12380举报网站建设经验
  • 加急网站备案wordpress php页面
  • 安平网站建设找盛千陈木胜拍完怒火重案了吗
  • 绿色简单网站企业电子商务网站设计的原则
  • 建设信息门户网站的条件网站开发都是模板
  • 怎么用小皮创建网站wordpress模板安装
  • 农业建设管理信息网站网站建设 计入哪个科目
  • 泉州住房城乡建设局网站vi设计软件
  • 36氪网站用什么程序做的青岛建设公司网站费用
  • 网站怎么做关键词研究河北建筑培训网实名认证
  • 固镇网站建设wordpress attachment.php
  • 做网站的工作要求注册网站要多久
  • 制作网站怎么用图片做背景WordPress留言板dux
  • 知名的摄影网站有哪些金华市建设监理协会网站
  • 做i网站网站开发敬请期待
  • 网站核验单智慧门店管理服务平台
  • 繁体网站模板不备案的网站能上去吗
  • 小学网站建设实施方案跑车网页制作素材
  • 网站做行测题我图网
  • 网站开发设计公石家庄企业名录大全