springboot配置多数据源后mybatis拦截器失效怎么办
发表于:2025-02-07 作者:千家信息网编辑
千家信息网最后更新 2025年02月07日,这篇文章给大家分享的是有关springboot配置多数据源后mybatis拦截器失效怎么办的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。配置文件是通过springcloud
千家信息网最后更新 2025年02月07日springboot配置多数据源后mybatis拦截器失效怎么办
这篇文章给大家分享的是有关springboot配置多数据源后mybatis拦截器失效怎么办的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。
配置文件是通过springcloudconfig远程分布式配置。采用阿里Druid数据源。并支持一主多从的读写分离。分页组件通过拦截器拦截带有page后缀的方法名,动态的设置total总数。
1. 解析配置文件初始化数据源
@Configurationpublic class DataSourceConfiguration { /** * 数据源类型 */ @Value("${spring.datasource.type}") private Class extends DataSource> dataSourceType; /** * 主数据源配置 * * @return */ @Bean(name = "masterDataSource", destroyMethod = "close") @Primary @ConfigurationProperties(prefix = "spring.datasource") public DataSource masterDataSource() { DataSource source = DataSourceBuilder.create().type(dataSourceType).build(); return source; } /** * 从数据源配置 * * @return */ @Bean(name = "slaveDataSource0") @ConfigurationProperties(prefix = "spring.slave0") public DataSource slaveDataSource0() { DataSource source = DataSourceBuilder.create().type(dataSourceType).build(); return source; } /** * 从数据源集合 * * @return */ @Bean(name = "slaveDataSources") public ListslaveDataSources() { List slaveDataSources = new ArrayList(); slaveDataSources.add(slaveDataSource0()); return slaveDataSources; }}
2. 定义数据源枚举类型
public enum DataSourceType { master("master", "master"), slave("slave", "slave"); private String type; private String name; DataSourceType(String type, String name) { this.type = type; this.name = name; } public String getType() { return type; } public void setType(String type) { this.type = type; } public String getName() { return name; } public void setName(String name) { this.name = name; }}
3. TheadLocal保存数据源类型
public class DataSourceContextHolder { private static final ThreadLocallocal = new ThreadLocal (); public static ThreadLocal getLocal() { return local; } public static void slave() { local.set(DataSourceType.slave.getType()); } public static void master() { local.set(DataSourceType.master.getType()); } public static String getJdbcType() { return local.get(); } public static void clearDataSource(){ local.remove(); }}
4. 自定义sqlSessionProxy
并将数据源填充到DataSourceRoute
@Configuration@ConditionalOnClass({EnableTransactionManagement.class})@Import({DataSourceConfiguration.class})public class DataSourceSqlSessionFactory { private Logger logger = Logger.getLogger(DataSourceSqlSessionFactory.class); @Value("${spring.datasource.type}") private Class extends DataSource> dataSourceType; @Value("${mybatis.mapper-locations}") private String mapperLocations; @Value("${mybatis.type-aliases-package}") private String aliasesPackage; @Value("${slave.datasource.number}") private int dataSourceNumber; @Resource(name = "masterDataSource") private DataSource masterDataSource; @Resource(name = "slaveDataSources") private ListslaveDataSources; @Bean @ConditionalOnMissingBean public SqlSessionFactory sqlSessionFactory() throws Exception { logger.info("======================= init sqlSessionFactory"); SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean(); sqlSessionFactoryBean.setDataSource(roundRobinDataSourceProxy()); PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver(); sqlSessionFactoryBean.setMapperLocations(resolver.getResources(mapperLocations)); sqlSessionFactoryBean.setTypeAliasesPackage(aliasesPackage); sqlSessionFactoryBean.getObject().getConfiguration().setMapUnderscoreToCamelCase(true); return sqlSessionFactoryBean.getObject(); } @Bean(name = "roundRobinDataSourceProxy") public AbstractRoutingDataSource roundRobinDataSourceProxy() { logger.info("======================= init robinDataSourceProxy"); DataSourceRoute proxy = new DataSourceRoute(dataSourceNumber); Map
数据
数据源
拦截器
配置
代码
类型
参数
数据库
文件
方法
目标
代理
分配
怎么办
事务
事务管理
内容
切面
多个
对象
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
数据库三层安全机制
呼吁重视网络安全的话
怎么更换服务器名称
云南省软件开发人员工资标准
量化交易软件开发盒装
三星神经网络技术
数据库信息查询
和网络安全工程师相关的专业
Vision软件开发环境
PB数据库sql
辽宁专升本网络技术专业
软件开发合同模式
云南省网络安全竞赛
软件开发皆往翰诺科技
南通个人软件开发价钱
文明重启有多少服务器
虚拟化服务器厂家
甘肃中小学生网络安全教育视频
奉贤区制造网络技术要多少钱
计算机三级网络技术时间6
excel 服务器组件
物联网服务器代码
达梦数据库 dm7
数据库ps和vb哪个好学
天津软件开发岗待遇
面试网络安全自我介绍
海诚信息影像软件开发
大型网游服务器多少钱
幼儿园网络安全周图片
网络安全工作由谁负责