springboot配置多数据源后mybatis拦截器失效怎么办
发表于:2026-11-04 作者:千家信息网编辑
千家信息网最后更新 2026年11月04日,这篇文章给大家分享的是有关springboot配置多数据源后mybatis拦截器失效怎么办的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。配置文件是通过springcloud
千家信息网最后更新 2026年11月04日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 List slaveDataSources() { 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 ThreadLocal local = 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 List slaveDataSources; @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安全错误
数据库的锁怎样保障安全
互联网科技图片
互联网科技保险
以房互联网科技
远信互联网科技
融贸通互联网科技
互联网金融 科技创新
互联网科技网站
重庆科技学院互联网
中正互联网科技招聘
华中科技有哪些互联网大佬
科技互联网的估值
剑昆互联网络科技有限公司临桂
互联网为啥属于高科技
福建科技产业互联网发展
互联网行业科技股
黑云互联网科技有限公司
东营紫格互联网科技
互联网科技接地气
数字互联网科技有限公司
六子台科技互联网展会
互联网科技的
鑫亿盛互联网科技
蓝色互联网科技
汉立互联网科技有限公司联系电话
互联网科技寓意
北京华百购互联网科技有限公司
金融科技与互联网金融相同和不同
呼和浩特新华互联网科技学院
兰石爱特工业互联网科技分公司
科技互联网专业工作会议发言稿