Spring 实现数据隔离

摘要:
需求用户数据要同时支持在mysql和redis进行管理、存储。思路利用spring的注解,在配置中指定存储类型,启动时识别并选择对应的实现类。

需求

用户数据要同时支持在mysql和redis进行管理、存储。

思路

利用spring的注解,在配置中指定存储类型,启动时识别并选择对应的实现类。

代码

1. 用户管理的接口类

public interfaceIUserManager {
  booleancreateUser(User user);
  booleanremoveUser();
  ...
}

2. 基于Mysql的实现类

@Service("mysql")
public class MysqlUserManager implementsIUserManager {
    @Autowired
    privateMysqlUserRepository userRepo;

    @Override
    public booleancreateUser(User user) {
        //创建用户的具体实现
userRepo.save(user);
        ...
    }
    
    //重写其他方法
...
}

3. 基于Redis的实现类

@Service("redis")
public class RedisUserManager implementsIUserManager {
    @Autowired
    privateRedisUserRepository userRepo;

    @Override
    public booleancreateUser(User user) {
        //创建用户的具体实现
userRepo.save(user);
        ...
    }
    
    //重写其他方法
...
}

4. 配置文件application.yml

//其他配置
...
//支持mysql和redis两种方式
user.store-type: mysql

5. 业务层入口类

@RequestMapping(path = "/")
public classUserServiceEndpointImpl {

    @Resource(name = "${user.store-type}")
    privateIUserManager userManager;

    @PostMapping(path = "addUser")
    publicString addUser(User user) {
        //新增用户
userManager.createUser(user);
        //其他业务逻辑
...
    }
}

标红的Resource注解位置,在SpringBoot程序启动时,会去读取配置中的user.store-type变量,读到的值会和2、3中的Service名称去比较,和哪个一致,便初始化哪个实现。

免责声明:文章转载自《Spring 实现数据隔离》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇【Guava】基于guava的重试组件Guava-Retryernginx upstream模块下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

mysql 归档方案(一次性)

一、 归档流程:                1. 导出需要的数据                2. 创建临时表table_tmp                3. 导入数据到临时表                4. 修改原始表名为table_bak                5. 修改临时表为原始表名 二、归档方式对比   1. select...

分布式任务队列--Celery的学习笔记

一、Celery简介   Celery是一个简单,灵活,可靠的分布式系统,用于处理大量消息,同时为操作提供维护此类系统所需的工具。它是一个任务队列,专注于实时处理,同时还支持任务调度。   所谓任务队列,是一个逻辑上的概念,可以将抽象中的任务发送到指定的执行任务的组件,任务队列可以跨线程或机器运行。   Celery是基于Python开发的分布式异步消息任...

Mysql数据优化--DBA梳理珍藏篇

1. 优化SQL1)     通过show status了解各种sql的执行频率         show status like 'Com_%'        了解 Com_select,Com_insert 的执行次数 2)    通过Explain分析低效的sql语句 3)    建立合适的索引 4)    通过show status like '...

MySQL 慢查询日志工具之pt-query-digest

1. 工具简介 pt-query-digest是用于分析mysql慢查询的一个工具,它可以分析binlog、General log、slowlog,也可以通过SHOWPROCESSLIST或者通过tcpdump抓取的MySQL协议数据来进行分析。可以把分析结果输出到文件中,分析过程是先对查询语句的条件进行参数化,然后对参数化以后的查询进行分组统计,统计出各...

mysql中的union用法以及子查询综合应用

union查询就是把2条或者多条sql语句的查询结果,合并成一个结果集。 如:sql1: N行,sql2: M行,sql1 union sql2 ---> N+M行 1、能否从2张表查询再union呢? 可以,union 合并的是"结果集",不区分在自于哪一张表. 2、取自于2张表,通过"别名"让2个结果集的列一致。那么,如果取出的结果集,列名字不...

在 docker 环境下部署运行 JumpServer 堡垒机

为了安全合规,也为了规范运维,在服务器的运维过程中是很有必要引入堡垒机工具的。 不过目前大部分堡垒机都是商用付费的,出于学习的目的,免费的堡垒机目前只看到有 麒麟堡垒机 和 JumpServer 两款。 麒麟堡垒机 界面有些老了,也不太清楚维护更新的状态如何,不过功能上还是非常全面的,但没有官方的 Docker 镜像用于快速部署还是比较遗憾,只能是单独准备...