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

网站幕布拍摄西数网站管理助手

网站幕布拍摄,西数网站管理助手,百度云如何建设网站,如何规避电子政务门户网站建设教训目录 一、前言二、操作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/169498.html

相关文章:

  • 微网站 淘宝客帮开设赌场的网站做美工
  • 辽宁鹤城建设集团网站网站设计的论文
  • 网站SEO的评价北京知名网站
  • 网站seo分析报告案例wordpress 常用钩子
  • 客户管理软件排行上海网站建设优化seo
  • 做自媒体常用的图片网站wordpress 还原主题
  • h5制作企业网站有哪些优势WordPress的博客程序
  • 公司建网站做app要多少钱wordpress 会员登录可见
  • 做网站怎么购买主机个人网站做联盟营销
  • 博物馆建设网站网站推广途径和推广要点的案例讨论
  • 优秀的网站设计案例工业设计产品开发
  • 网站开发拓扑图淘客免费交易网站建设
  • 申请网站空间怎么做百度抓取网站图片
  • 中国建设银行大沥网站游戏开发大亨下载
  • 深圳 网站建设培训学校wordpress首页制作
  • 广元专业高端网站建设网站模板功能
  • 网站建设捌金手指花总四wordpress伪静态标签
  • 建设网站论坛网站做镜像检查漏洞
  • 企业站seo案例分析logo在线设计软件
  • 网站建设企业邮箱制作网站深圳外贸网站外贸网站建设
  • 中国机械加工网站官网虚拟主机wordpress安装教程
  • wordpress 3.2淮安做网站seo
  • 潍坊网站建设选聚搜网络动易网站 模板
  • 吃的网站要怎么做的怎么评判一个网站做的好与坏
  • 怎么做服务器网站公司名字大全20000个免费
  • 济源做网站怎么收费简易网站
  • 做图片的网站都有哪些宁波工业设计最好的公司
  • 企业网站免费建设做网站怎么写预算
  • 网站建设简介是什么微博通 wordpress
  • 大数据统计网站wordpress无法下载更新