资讯动态

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

发布时间:2026/10/30 5:46:19 来源:尧图企业网站定制
renren-security多数据源配置详解支持MySQL、Oracle、PostgreSQL【免费下载链接】renren-security采用Spring、MyBatis、Shiro框架开发的一套权限系统极低门槛拿来即用。设计之初就非常注重安全性为企业系统保驾护航让一切都变得如此简单。【QQ群324780204、145799952】项目地址: https://gitcode.com/gh_mirrors/re/renren-securityrenren-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?useUnicodetruecharacterEncodingUTF-8serverTimezoneAsia/Shanghai username: root password: root dynamic: datasource: # 数据源1MySQL mysql: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://localhost:3306/renren_security_mysql?useUnicodetruecharacterEncodingUTF-8serverTimezoneAsia/Shanghai username: root password: root # 数据源2Oracle oracle: driver-class-name: oracle.jdbc.OracleDriver url: jdbc:oracle:thin:localhost:1521:ORCL username: system password: oracle # 数据源3PostgreSQL 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 ServiceImplUserDao, UserEntity implements UserService { // 使用默认数据源 Override public ListUserEntity list() { return baseMapper.selectList(null); } // 使用MySQL数据源 DataSource(mysql) Override public ListUserEntity listFromMysql() { return baseMapper.selectList(null); } // 使用Oracle数据源 DataSource(oracle) Override public ListUserEntity listFromOracle() { return baseMapper.selectList(null); } // 使用PostgreSQL数据源 DataSource(postgresql) Override public ListUserEntity 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 MapObject, Object getDynamicDataSource(){ MapString, DataSourceProperties dataSourcePropertiesMap properties.getDatasource(); MapObject, 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),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑