Spring 实现数据隔离
Posted Mister_W
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring 实现数据隔离相关的知识,希望对你有一定的参考价值。
需求
用户数据要同时支持在mysql和redis进行管理、存储。
思路
利用spring的注解,在配置中指定存储类型,启动时识别并选择对应的实现类。
代码
1. 用户管理的接口类
public interface IUserManager { boolean createUser(User user); boolean removeUser(); ... }
2. 基于Mysql的实现类
@Service("mysql") public class MysqlUserManager implements IUserManager { @Autowired private MysqlUserRepository userRepo; @Override public boolean createUser(User user) { //创建用户的具体实现 userRepo.save(user); ... } //重写其他方法 ... }
3. 基于Redis的实现类
@Service("redis") public class RedisUserManager implements IUserManager { @Autowired private RedisUserRepository userRepo; @Override public boolean createUser(User user) { //创建用户的具体实现 userRepo.save(user); ... } //重写其他方法 ... }
4. 配置文件application.yml
//其他配置 ... //支持mysql和redis两种方式 user.store-type: mysql
5. 业务层入口类
@RequestMapping(path = "/") public class UserServiceEndpointImpl { @Resource(name = "${user.store-type}") private IUserManager userManager; @PostMapping(path = "addUser") public String addUser(User user) { //新增用户 userManager.createUser(user); //其他业务逻辑 ... } }
标红的Resource注解位置,在SpringBoot程序启动时,会去读取配置中的user.store-type变量,读到的值会和2、3中的Service名称去比较,和哪个一致,便初始化哪个实现。
以上是关于Spring 实现数据隔离的主要内容,如果未能解决你的问题,请参考以下文章
Spring是怎么通过AOP实现事物管理的,它支持哪几种事务隔离类型;
spring练习,在Eclipse搭建的Spring开发环境中,使用set注入方式,实现对象的依赖关系,通过ClassPathXmlApplicationContext实体类获取Bean对象(代码片段