spring读写分离 - 事务注解篇

这篇博客介绍了如何在Spring中使用@Transactional注解实现读写分离。文章指出,每个需要事务的方法上必须添加该注解,并提供了多数据源配置的代码示例,强调了配置顺序的重要性,以确保事务拦截器在读写分离之前执行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


思路参照 spring读写分离 - 事务配置篇(转) ,不过是基于@Transactional判断,所以每个需要事务的方法上都必须添加上这个注解,这里直接贴出代码:

配置文件:

多数据源配置:

  <bean id="dataSource"
    class="com.lmiky.platform.database.datasource.DynamicDataSource">
    <property name="readDataSources">
      <list>
        <ref bean="readDataSource1" />
        <ref bean="readDataSource2" />
      </list>
    </property>
    <property name="writeDataSource" ref="writeDataSource" />
  </bean>

数据源拦截器:

  <bean id="dateSourceAspect"
    class="com.lmiky.platform.database.datasource.DateSourceAspect" />
  <aop:config expose-proxy="true">
    <aop:aspect ref="dateSourceAspect" order="0">
      <aop:pointcut id="dateSourcePointcut"
        expression="execution(* com.lmiky..service.impl..*.*(..))"/>
      <aop:around pointcut-ref="dateSourcePointcut" method="determineReadOrWriteDB" />
    </aop:aspect>
  </aop:config>

要保证让这个拦截在事务的拦截器之前,否则如果spring先拦截事务的话,就不会起效了。可以用order设的值来排序,或者把这个配置的代码放在跟事务配置的代码同一个页面,并且放在事务配置代码的前面,spring是按代码顺序来执行的。

其他的跟单个数据源配置一样。

java代码:


数据源拦截器
package com.lmiky.platform.database.datasource;

import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.reflect.MethodSignature;
i
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值