news 2026/5/3 23:24:57

renren-security多数据源配置详解:支持MySQL、Oracle、PostgreSQL

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
renren-security多数据源配置详解:支持MySQL、Oracle、PostgreSQL

renren-security多数据源配置详解:支持MySQL、Oracle、PostgreSQL

【免费下载链接】renren-security采用Spring、MyBatis、Shiro框架,开发的一套权限系统,极低门槛,拿来即用。设计之初,就非常注重安全性,为企业系统保驾护航,让一切都变得如此简单。【QQ群:324780204、145799952】项目地址: https://gitcode.com/gh_mirrors/re/renren-security

renren-security是一套基于Spring、MyBatis、Shiro框架开发的权限系统,极低门槛,拿来即用。设计之初,就非常注重安全性,为企业系统保驾护航,让一切都变得如此简单。本文将详细介绍如何在renren-security中配置多数据源,以支持MySQL、Oracle、PostgreSQL等多种数据库。

为什么需要多数据源配置

在企业级应用开发中,常常会遇到需要同时操作多个数据库的场景。例如,部分数据存储在MySQL中,而业务报表数据存储在PostgreSQL中,或者需要从Oracle数据库中读取历史数据。renren-security提供了强大的多数据源支持,让开发者可以轻松应对这些复杂场景。

多数据源配置核心组件

renren-security的多数据源功能主要由renren-dynamic-datasource模块提供支持。该模块包含以下核心组件:

  • DynamicDataSourceConfig:多数据源配置类,负责创建和管理多个数据源
  • DynamicDataSource:动态数据源类,实现数据源的动态切换
  • DataSource:多数据源注解,用于标记需要使用特定数据源的方法
  • DataSourceAspect:多数据源切面处理类,负责解析数据源注解并切换数据源

快速开始:多数据源配置步骤

步骤一:引入多数据源依赖

确保项目中已引入renren-dynamic-datasource模块,相关依赖配置在renren-dynamic-datasource/pom.xml中。

步骤二:配置数据源信息

renren-admin/src/main/resources/application-dev.yml中配置多数据源信息,示例如下:

##多数据源的配置,需要引用renren-dynamic-datasource spring: datasource: druid: # 默认数据源配置 driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://localhost:3306/renren_security?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai username: root password: root dynamic: datasource: # 数据源1:MySQL mysql: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://localhost:3306/renren_security_mysql?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai username: root password: root # 数据源2:Oracle oracle: driver-class-name: oracle.jdbc.OracleDriver url: jdbc:oracle:thin:@localhost:1521:ORCL username: system password: oracle # 数据源3:PostgreSQL postgresql: driver-class-name: org.postgresql.Driver url: jdbc:postgresql://localhost:5432/renren_security_pg username: postgres password: postgres

步骤三:使用@DataSource注解切换数据源

在需要使用特定数据源的Service方法上添加@DataSource注解,指定数据源名称即可。例如:

@Service public class UserServiceImpl extends ServiceImpl<UserDao, UserEntity> implements UserService { // 使用默认数据源 @Override public List<UserEntity> list() { return baseMapper.selectList(null); } // 使用MySQL数据源 @DataSource("mysql") @Override public List<UserEntity> listFromMysql() { return baseMapper.selectList(null); } // 使用Oracle数据源 @DataSource("oracle") @Override public List<UserEntity> listFromOracle() { return baseMapper.selectList(null); } // 使用PostgreSQL数据源 @DataSource("postgresql") @Override public List<UserEntity> listFromPostgreSQL() { return baseMapper.selectList(null); } }

多数据源实现原理

多数据源的实现核心在于DynamicDataSourceConfig类,该类负责创建和管理多个数据源。关键代码如下:

@Configuration @EnableConfigurationProperties(DynamicDataSourceProperties.class) public class DynamicDataSourceConfig { @Autowired private DynamicDataSourceProperties properties; @Bean public DynamicDataSource dynamicDataSource(DataSourceProperties dataSourceProperties) { DynamicDataSource dynamicDataSource = new DynamicDataSource(); dynamicDataSource.setTargetDataSources(getDynamicDataSource()); //默认数据源 DruidDataSource defaultDataSource = DynamicDataSourceFactory.buildDruidDataSource(dataSourceProperties); dynamicDataSource.setDefaultTargetDataSource(defaultDataSource); return dynamicDataSource; } private Map<Object, Object> getDynamicDataSource(){ Map<String, DataSourceProperties> dataSourcePropertiesMap = properties.getDatasource(); Map<Object, Object> targetDataSources = new HashMap<>(dataSourcePropertiesMap.size()); dataSourcePropertiesMap.forEach((k, v) -> { DruidDataSource druidDataSource = DynamicDataSourceFactory.buildDruidDataSource(v); targetDataSources.put(k, druidDataSource); }); return targetDataSources; } }

上述代码中,getDynamicDataSource方法从配置中读取所有数据源信息,并创建对应的DruidDataSource实例,存储在targetDataSourcesmap中。dynamicDataSource方法则创建DynamicDataSource实例,设置所有数据源和默认数据源。

多数据源使用场景

场景一:读写分离

可以配置一个主库(写库)和多个从库(读库),通过@DataSource注解在写操作时使用主库,读操作时使用从库,实现读写分离。

场景二:多数据库类型支持

如本文所述,同时支持MySQL、Oracle、PostgreSQL等多种数据库类型,满足不同业务数据存储需求。

场景三:分库分表

对于数据量大的表,可以按一定规则分拆到多个数据库中,通过多数据源实现分库分表查询。

多数据源测试

renren-security提供了多数据源测试类DynamicDataSourceTest,位于renren-admin/src/test/java/io/renren/DynamicDataSourceTest.java,可以通过该测试类验证多数据源配置是否正确。

总结

renren-security的多数据源功能为企业级应用开发提供了强大的支持,通过简单的配置和注解即可实现多数据源的动态切换。无论是读写分离、多数据库类型支持还是分库分表,renren-security都能满足你的需求,让开发变得更加简单高效。

如果你在使用过程中遇到任何问题,可以加入QQ群:324780204、145799952,与其他开发者交流讨论。

【免费下载链接】renren-security采用Spring、MyBatis、Shiro框架,开发的一套权限系统,极低门槛,拿来即用。设计之初,就非常注重安全性,为企业系统保驾护航,让一切都变得如此简单。【QQ群:324780204、145799952】项目地址: https://gitcode.com/gh_mirrors/re/renren-security

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/3 23:22:24

如何快速掌握datasketch:概率数据结构的终极实现指南

如何快速掌握datasketch&#xff1a;概率数据结构的终极实现指南 【免费下载链接】datasketch MinHash, LSH, LSH Forest, Weighted MinHash, HyperLogLog, HyperLogLog, LSH Ensemble and HNSW 项目地址: https://gitcode.com/gh_mirrors/da/datasketch datasketch是一…

作者头像 李华
网站建设 2026/5/3 23:14:26

KaTrain快捷键大全:30个高效操作技巧让你的训练事半功倍

KaTrain快捷键大全&#xff1a;30个高效操作技巧让你的训练事半功倍 【免费下载链接】katrain Improve your Baduk skills by training with KataGo! 项目地址: https://gitcode.com/gh_mirrors/ka/katrain KaTrain是一款专注于提升围棋技能的训练软件&#xff0c;通过与…

作者头像 李华
网站建设 2026/5/3 23:13:28

D8加密狗实战:如何将你的JavaScript代码‘锁’进硬件里?

D8加密狗实战&#xff1a;如何将你的JavaScript代码‘锁’进硬件里&#xff1f; 在当今数字化时代&#xff0c;代码安全已成为开发者不可忽视的核心议题。特别是对于那些包含核心算法或商业逻辑的JavaScript代码&#xff0c;如何防止被反编译或篡改&#xff1f;D8加密狗提供了一…

作者头像 李华
网站建设 2026/5/3 23:12:28

Word分节符实战:搞定复杂页码、页眉页脚独立设置的终极指南

Word分节符实战&#xff1a;搞定复杂页码、页眉页脚独立设置的终极指南 当你面对一份包含封面、目录、正文和附录的复杂文档时&#xff0c;是否曾被页码设置折磨得焦头烂额&#xff1f;封面不要页码、目录要用罗马数字、正文又要从1开始的阿拉伯数字...这些需求背后隐藏着一个W…

作者头像 李华