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

哈尔滨网站设计报价网销是做什么的

哈尔滨网站设计报价,网销是做什么的,广州seo网站排名优化,19网站建设目录 一、前言二、操作1、引入依赖2、配置默认数据库 13、定义数据源实体和 Repository4、定义动态数据源5、配置数据源6、定义切换数据源注解7、定义切面类8、使用注解切换数据源 一、前言 通过切面注解方式根据不同业务动态切换数据库 二、操作 1、引入依赖 dependen… 目录 一、前言二、操作1、引入依赖2、配置默认数据库 13、定义数据源实体和 Repository4、定义动态数据源5、配置数据源6、定义切换数据源注解7、定义切面类8、使用注解切换数据源 一、前言 通过切面注解方式根据不同业务动态切换数据库 二、操作 1、引入依赖 dependenciesdependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-data-jpa/artifactId/dependencydependencygroupIdmysql/groupIdartifactIdmysql-connector-java/artifactId/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-aop/artifactId/dependencydependencygroupIdcom.zaxxer/groupIdartifactIdHikariCP/artifactId/dependency /dependencies2、配置默认数据库 1 在 application.properties 或 application.yml 配置数据库 1 信息 spring.datasource.urljdbc:mysql://localhost:3306/db1 spring.datasource.usernameroot spring.datasource.passwordpassword spring.datasource.driver-class-namecom.mysql.cj.jdbc.Driver3、定义数据源实体和 Repository 数据源实体 DataSourceConfig.java import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id;Entity public class DataSourceEntity {IdGeneratedValue(strategy GenerationType.IDENTITY)private Long id;private String url;private String username;private String password;private String driverClassName;private String dataSourceKey; // 新增字段// Getters 和 Setterspublic Long getId() {return id;}public void setId(Long id) {this.id id;}public String getUrl() {return url;}public void setUrl(String url) {this.url url;}public String getUsername() {return username;}public void setUsername(String username) {this.username username;}public String getPassword() {return password;}public void setPassword(String password) {this.password password;}public String getDriverClassName() {return driverClassName;}public void setDriverClassName(String driverClassName) {this.driverClassName driverClassName;}public String getDataSourceKey() {return dataSourceKey;}public void setDataSourceKey(String dataSourceKey) {this.dataSourceKey dataSourceKey;} }Repository 接口 DataSourceConfigRepository.java import org.springframework.data.jpa.repository.JpaRepository;public interface DataSourceConfigRepository extends JpaRepositoryDataSourceEntity, Long { }4、定义动态数据源 动态数据源上下文持有者 DynamicDataSourceContextHolder.java public class DynamicDataSourceContextHolder {private static final ThreadLocalString contextHolder new ThreadLocal();public static void setDataSourceKey(String key) {contextHolder.set(key);}public static String getDataSourceKey() {return contextHolder.get();}public static void clearDataSourceKey() {contextHolder.remove();} }动态数据源类 DynamicDataSource.java import org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource;public class DynamicDataSource extends AbstractRoutingDataSource {Overrideprotected Object determineCurrentLookupKey() {return DynamicDataSourceContextHolder.getDataSourceKey();} }5、配置数据源 import com.zaxxer.hikari.HikariDataSource; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Primary; import org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource;import javax.sql.DataSource; import java.util.HashMap; import java.util.List; import java.util.Map;Configuration public class DataSourceConfig {Autowiredprivate DataSourceConfigRepository dataSourceConfigRepository;PrimaryBeanpublic DataSource dataSource() {DynamicDataSource dynamicDataSource new DynamicDataSource();MapObject, Object targetDataSources new HashMap();// 从数据库 1 的 datasource 表加载所有数据源ListDataSourceEntity dataSourceConfigs dataSourceConfigRepository.findAll();for (DataSourceEntity config : dataSourceConfigs) {HikariDataSource dataSource new HikariDataSource();dataSource.setJdbcUrl(config.getUrl());dataSource.setUsername(config.getUsername());dataSource.setPassword(config.getPassword());dataSource.setDriverClassName(config.getDriverClassName());targetDataSources.put(config.getId().toString(), dataSource);if (db1.equals(config.getDataSourceKey())) { // 假设表中有一个字段表示数据源的 keydynamicDataSource.setDefaultTargetDataSource(dataSource);}}dynamicDataSource.setTargetDataSources(targetDataSources);return dynamicDataSource;} }6、定义切换数据源注解 import java.lang.annotation.*;Target({ElementType.METHOD, ElementType.TYPE}) Retention(RetentionPolicy.RUNTIME) Documented public interface DataSourceSwitch {String value() default db1; }7、定义切面类 import org.aspectj.lang.JoinPoint; import org.aspectj.lang.annotation.After; import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Before; import org.aspectj.lang.reflect.MethodSignature; import org.springframework.stereotype.Component;import java.lang.reflect.Method; import java.util.List;Aspect Component public class DataSourceSwitchAspect {Autowiredprivate DataSourceConfigRepository dataSourceConfigRepository;Before(annotation(com.example.annotation.DataSourceSwitch))public void before(JoinPoint point) {MethodSignature signature (MethodSignature) point.getSignature();Method method signature.getMethod();DataSourceSwitch dataSourceSwitch method.getAnnotation(DataSourceSwitch.class);if (dataSourceSwitch ! null) {String dataSourceKey dataSourceSwitch.value();ListDataSourceEntity dataSourceConfigs dataSourceConfigRepository.findAll();for (DataSourceConfig config : dataSourceConfigs) {if (dataSourceKey.equals(config.getDataSourceKey())) {DynamicDataSourceContextHolder.setDataSourceKey(config.getId().toString());break;}}}}After(annotation(com.example.annotation.DataSourceSwitch))public void after(JoinPoint point) {DynamicDataSourceContextHolder.clearDataSourceKey();} }8、使用注解切换数据源 import com.example.annotation.DataSourceSwitch; import com.example.entity.User; import com.example.repository.UserRepository; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service;import java.util.List;Service public class UserService {Autowiredprivate UserRepository userRepository;DataSourceSwitch(db1)public ListUser getUsersFromDb1() {return userRepository.findAll();}DataSourceSwitch(db2) // 假设 db2 是从 datasource 表获取的数据源 keypublic ListUser getUsersFromDb2() {return userRepository.findAll();} }
http://www.dnsts.com.cn/news/2408.html

相关文章:

  • 丹阳新闻网网站推广和优化的原因
  • 网站后台邮箱设置2021年网络热点舆论
  • 网页制作与前端开发aso优化报价
  • 怎样做黄色网站推广神器app
  • 网网站制作持啊传媒企业推广
  • 做自己独特的表白网站广州百度搜索优化
  • 关于做暧暧的网站成品短视频app下载有哪些
  • 怎么做网站10步骤短视频推广平台有哪些
  • 动漫制作和动漫设计哪个好seo策略分析
  • 网站最合适的字体大小沈阳seo优化排名公司
  • 手机端便民服务平台网站建设推广引流哪个软件最好
  • 手机制作网站的软件推广图片制作
  • 做家教备课用什么网站手机百度快照
  • 聚美优品网站建设方案竞价推广托管公司价格
  • 网站建设的付款方式google搜索入口
  • 什么是网站?广安百度推广代理商
  • 中信建设有限责任公司发债公告百度seo优化是什么
  • 公司做网站怎么做账电脑培训班有哪些科目
  • 杭州做网站的公司百度上怎么做推广
  • php做网站首页修改石家庄关键词优化平台
  • 做网店网站滕州seo
  • 网站开发包括免费网络营销软件
  • wordpress 密码验证失败深圳做seo有哪些公司
  • 做网站框架搭建的人百度门店推广
  • 企业网站建设哪家便宜百度推广账户登录首页
  • 网站建设的公司开发方案推一手新闻发稿平台
  • 青岛一点两区救治医院seo搜外
  • 网站下载的wordpress模板如何添加品牌营销活动策划方案
  • 山海关网站制作优化软件刷排名seo
  • 小学做试卷的网站售卖链接