springboot 配置全局事务支持(非注解式)

SpringBoot框架中使用注解式Dubbo SpringBoot框架中使用注解式Dubbo新建三个模块dubbo-demo-api 通用接口dubbo-demo-service 服务提供方dubbo-demo-web 服务消费方注解配置需要 2.5.7 及以上版本支持服务提供方Service注解暴露服务 import com.alibaba.dubbo.config.annotation.Service; @Co... 阅读详情

1.引入jar包

  <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-aop</artifactId>
        </dependency>

2.编写工具类

import org.aspectj.lang.annotation.Aspect;
import org.springframework.aop.Advisor;
import org.springframework.aop.aspectj.AspectJExpressionPointcut;
import org.springframework.aop.support.DefaultPointcutAdvisor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.transaction.PlatformTransactionManager;
import org.springframework.transaction.TransactionDefinition;
import org.springframework.transaction.interceptor.DefaultTransactionAttribute;
import org.springframework.transaction.interceptor.NameMatchTransactionAttributeSource;
import org.springframework.transaction.interceptor.TransactionInterceptor;

@Aspect
@Configuration
public class TransactionAdviceConfig {
     private static final String AOP_POINTCUT_EXPRESSION = "execution (* com.***.service.*.*(..))";

        @Autowired
        private PlatformTransactionManager transactionManager;

        @Bean
        public TransactionInterceptor txAdvice() {

            DefaultTransactionAttribute txAttr_REQUIRED = new DefaultTransactionAttribute();
            txAttr_REQUIRED.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED);

            DefaultTransactionAttribute txAttr_REQUIRED_READONLY = new DefaultTransactionAttribute();
            txAttr_REQUIRED_READONLY.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED);
            txAttr_REQUIRED_READONLY.setReadOnly(true);

            NameMatchTransactionAttributeSource source = new NameMatchTransactionAttributeSource();
            source.addTransactionalMethod("add*", txAttr_REQUIRED);
            source.addTransactionalMethod("save*", txAttr_REQUIRED);
            source.addTransactionalMethod("delete*", txAttr_REQUIRED);
            source.addTransactionalMethod("update*", txAttr_REQUIRED);
            source.addTransactionalMethod("exec*", txAttr_REQUIRED);
            source.addTransactionalMethod("set*", txAttr_REQUIRED);
            source.addTransactionalMethod("get*", txAttr_REQUIRED_READONLY);
            source.addTransactionalMethod("query*", txAttr_REQUIRED_READONLY);
            source.addTransactionalMethod("find*", txAttr_REQUIRED_READONLY);
            source.addTransactionalMethod("list*", txAttr_REQUIRED_READONLY);
            source.addTransactionalMethod("count*", txAttr_REQUIRED_READONLY);
            source.addTransactionalMethod("is*", txAttr_REQUIRED_READONLY);
            return new TransactionInterceptor(transactionManager, source);
        }

        @Bean
        public Advisor txAdviceAdvisor() {
            AspectJExpressionPointcut pointcut = new AspectJExpressionPointcut();
            pointcut.setExpression(AOP_POINTCUT_EXPRESSION);
            return new DefaultPointcutAdvisor(pointcut, txAdvice());
        }
}
 

转发 https://blog.youkuaiyun.com/qq_22860341/article/details/81285715

SpringBoot使用AspectJ实现AOP记录接口:请求日志、响应日志、异常日志 AspectJ 是一个面向切面的框架,它扩展了 Java 语言,并定义了 AOP(面向切面编程)语法。AspectJ 作为 AOP 的具体实现之一,向 Java 中加入了连接点(Join Point)这个新概念,以及切点(pointcut)、通知(Advice)、类型间声明(Inter-type declaration)和方面(Aspect)等新结构。这些新结构使得AspectJ能够处理那些使用传统的面向对象编程方法难以解决的问题,如横切关注点(如安全性、日志记录、事务管理等)的模块化。 阅读详情

相关推荐

SpringBoot配置类替代@Transactional注解实现事务的控制

package com.example.zcw.config; import org.aspectj.lang.annotation.Aspect; import org.springframework.aop.Advisor; import org.springframework.aop.aspectj.AspectJExpressionPointcut; import org.springf...

知识改变命运,ヾ(◍°∇°◍)ノ゙【求关注】 1223

springboot如何进行事务管理,不用注解如何配置

此外,Spring Boot还提供了其他一些注解来进行更细粒度的事务管理,如`@Transactional(propagation = Propagation.REQUIRED)`用于指定事务的传播行为,`@Transactional(readOnly = true)`用于指定事务的只读属性等。通过以上步骤,Spring Boot会自动为被`@Transactional`注解标记的方法或类创建事务,并在方法执行前开启事务,在方法执行后根据方法的执行结果进行事务的提交或回滚。

m0_62381101的博客 1484

如何打开本地网络的防火墙端口(Windows版)解决ConnectionRefusedError: [WinError 10061] 由于目标计算机积极拒绝,无法连接。问题

ConnectionRefusedError: [WinError 10061] 由于目标计算机积极拒绝,无法连接。 最开始在遇到这个报错的时候十分不解,后来经过思考,有可能是服务器端口占用,或者并没有放行。因此搜查问题的关键是要先去排查问题。 在搜索栏输入控制面板 选择防火墙 选择开关 保证这些选项是开着的 选择高级设置 新建规则 创建协议端口 选择端口 允许连接 点击下一步 创建规则后点击下一步(后命名) 选择任意端口ALL即可 问题排查完毕!socket创建网络通信时,有读者

weixin_46900108的博客 9万+

SpringBoot 平台事务管理,可不用@Transaction 注解(统一规范方法名)方式还有其它

SpringBoot 平台事务管理,可不用@Transaction 注解(统一规范方法名)方式还有其它   方式一 import org.aspectj.lang.annotation.Aspect; import org.springframework.aop.Advisor; import org.springframework.aop.aspectj.AspectJExpression...

ui466327的博客 5511

【嵌入式原理系列-第七篇】ld脚本实战:从零构建MCU内存布局

本文是一篇针对嵌入式开发者的实战指南,详细讲解了如何从零开始为MCU编写ld链接器脚本以构建自定义内存布局。文章以STM32F103C8T6为例,深入剖析了MEMORY和SECTIONS指令的用法,并提供了OTA分区、非易失数据存储等高级定制案例,帮助开发者解决实际工程中的Flash与RAM管理难题,实现对程序运行的深度掌控。

weixin_29271263的博客 249

批量导入经纬度点到奥维地图中

随便说说 最近出来出差,天天东奔西跑的,跑完了回到酒店还得整理一天的成果,基本上晚上9点才能整理完,累的基本上倒头就睡,没时间鼓捣自己喜欢的东西了。但想着也得写点啥吧,想来想去就那最近工作中用到的东西吧。因为我们现在的工作内容呢,基本上就是按照着上面给的地理位置找到地方开始检查。所以呢,就需要批量的把手上的经纬点信息导入到地图中,安排好路线,利用导航高效的找到地方。给的坐标就是gps点,wgs-84的,使用奥维地图最方便了,不用做坐标转换直接能用。所以作为组里的gis担(苦)当(力),这个导坐标的活就由我来

lionhenryzxxy的博客 3万+

Spring注解和非注解实现声明时事务处理功能

一、Spring注解和非注解实现事务处理功能     例1:使用注解实现事务处理 在Spring配置文件中配置事务管理类,并添加对注解配置的事务的支持 当容器开启时打开注解  --> 注入事务管理器 --> 注释驱动 --> 使用@Transactional为方法添加事务支持 @Transactional(propagation=Propagation.R

lixiao1048的博客 1436

SillyTavern角色卡制作全攻略:如何用AI还原你喜欢的虚构角色(附三叶完整角色卡JSON)

本文详细介绍了如何使用SillyTavern制作高质量AI角色卡,以《你的名字》中的宫水三叶为例,从角色特征提取、对话风格捕捉到JSON结构优化,全面解析AI角色扮演的创作技巧。通过具体的写作示例和完整角色卡JSON,帮助二次元爱好者和同人创作者实现虚构角色的精准还原与生动互动。

pandas7gardener的博客 2138

SpringBoot非官方教程 | 第七篇:springboot开启声明式事务

转载请标明出处: http://blog.youkuaiyun.com/forezp/article/details/70833629 本文出自方志朋的博客 springboot开启事务很简单,只需要一个注解@Transactional 就可以了。因为在springboot中已经默认对jpa、jdbc、mybatis开启了事事务,引入它们依赖的时候...

weixin_30346033的博客 690

全球、中国各省市县等行政区划(含十段线)shape及geosjon数据免费下载

免费下载全球、中国各省市县等行政区划(含十段线)shape及geosjon数据

mhf403445651的博客 3460

Microsemi Libero使用技巧11——CoreUARTAPB RX管脚分配时不显示

调用串口IP核CoreUARTAPB,并例化到顶层设计,发现UART_RX管脚在进行管脚分配时没有显示出来,最后发现是CoreAPB3总线IP核配置不对导致,改为如下配置后正常。

whik1194的博客 758

【SpringBoot WebFlux篇】WebFlux注解式开发完整指南(兼容MVC)

前面五篇我们已经彻底吃透 WebFlux 底层原理:异步非阻塞模型、响应式规范、Mono/Flux 数据流、高频操作符、线程调度模型,搞定了所有底层理论与性能核心知识点。从本篇开始,正式进入业务落地实战阶段。注解式开发和函数式开发。其中注解式开发兼容 SpringMVC 注解习惯,上手零门槛,无需改变原有编码思维,仅需适配响应式返回值,即可快速开发高并发接口。本文聚焦生产最常用的注解式开发,一站式解决:项目搭建、依赖冲突、参数绑定、跨域、文件上传、请求拦截、结果封装等全流程业务问题。依赖冲突坑。

荏苒夕阳的博客 244

RK3588+YT9215快速拓展以太网口

YT9215支持7个端口的非阻塞数据传输,确保高效的数据流处理;在开发过程中,最重要的一点就是YT9215与RK3588的GMAC连接和配置部分,下面是gmac1对应dtsi文件的修改,包括注释掉rgmii_phy1对应的mdio1,以及gmac1对应的phy-handle部分,同时将gmac1修改成1000Mbps全双工模式。这就是最简单,最快速的RK3588拓展网口的方法了,如果需要用到交换芯片的其他功能,那就不可以直接使用原厂提供的bin,而是需要对YT9215进行另外的驱动开发。

带着耳朵取流浪的博客 2795

SpringBoot项目整合Retrofit最佳实践

大家都知道okhttp是一款由square公司开源的java版本http客户端工具。实际上,square公司还开源了基于okhttp进一步封装的retrofit工具,用来支持通过接口的方式发起http请求。如果你的项目中还在直接使用RestTemplate或者okhttp,或者基于它们封装的HttpUtils,那么你可以尝试使用Retrofit。 retrofit-spring-boot-starter实现了Retrofit与SpringBoot框架快速整合,并且支持了部分功能增强,从而极大的简化sprin

若明天不见 1万+

Allegro172版本DFM功能介绍

Allegro172版本提供了实时DFM检查的功能,让违反要求的地方实时以DRC的形式报出来,让加工不可加工因素在设计的时候同步避免。打开Constraint,选择Manufacturing, 所有DFM相关DRC都在这。把所有下面DRC开关(DFM,DFA,DFT)都选择on,选择OK。这个规则和物理和间距规则等等都没有关系,单独的一个加工规则。这些DRC大部分是正常的,正常的可以去修改规则来消除。等待DRC刷新,板子上会出现很多DRC,类似下图。下面介绍如何调用和产生DFM规则。一直往下点击next。

weixin_54787054的博客 1340

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

SpringBoot中对JDBC的支持

SpringBoot中对JDBC的支持 1.依赖导入 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> </dependency> <dependency>

GuessHat的博客 515

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Springboot MongoDb Mysql 多数据源 事务配置

软件版本: MongoDb: 使用Docker进行部署 root@119ce58d3c1f:/# mongo MongoDB shell version v4.4.5 connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb Implicit session: session { "id" : UUID("c278fd96-dbe5-44bc-a608-3a0bb3307b3d.

qvc180的博客 2864

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

SpringBoot——纯注解配置的Spring

SpringBoot的原理:纯注解配置的Spring

wan的博客 1095

Spring Boot 3.0 新特性:注解式配置实战

Spring Boot 3.0 强化了注解式配置的简洁性与功能性,重点围绕 Jakarta EE 9+、GraalVM 原生镜像支持以及模块化改进。整合了自动配置与组件扫描,Spring Boot 3.0 默认扫描主类所在包及其子包。以上实践方案需结合具体场景调整,Spring Boot 3.0 的注解体系显著提升了配置的声明式编程体验。系列注解支持更细粒度的控制逻辑。新增对 JUnit 5 的扩展支持,可结合。Spring Security 6 整合后,为支持 GraalVM 原生编译,新增。

2501_94059731的博客 317

SpringBoot 注解式接口加解密

基于 Spring Boot + MyBatis Plus + Vue & Element 实现的后台管理系统 + 用户小程序,支持 RBAC 动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城等功能。该方案可直接应用于需要接口加解密的场景(如支付、用户敏感信息传输),提升接口安全性。- 采用接口化设计封装加密算法,支持算法模块的可插拔替换,无需改动核心代码。视频教程:https://doc.iocoder.cn/video/:算法接口化设计,可快速扩展RSA、SM4等其他算法;

芋艿V 54

springboot整合redis

目标: 1、SpringBoot配置类 2、SpringBoot整合redis及其注解式开发 SpringBoot配置类 注解标签 @Configuration @Configuration底层是含有@Component ,所以@Configuration 具有和 @Component 的作用。 @Configuration可理解为用spring的时候xml里面的<beans...

weixin_45174537的博客 182

SpringBoot整合Redis 方法注解式与手动操作

添加Pom文件支持 <!-- redis依赖包 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> 配置Redis的连接信息 #redis配置 #Redis服务器地址 spring.redis.hos

Mirage__的博客 1063

十五 Springboot-配置Spring事务

15.1 Spring事务回顾 15.1.2 原理 ​ Spring的事务是使用的是AOP,AOP的底层使用动态代理实现的。 15.1.3 使用 xml TransationManager:需要在xml中配置一个事务管理器 Advisor:通知 PointCUt:通过切面应用通知. 注解式 TransationManager:需要在xml中配置一个事务管理器 打注解@Transational:在需要配置事务类上面加注解 扫描注解</tx:annotationDriven>:xml中需要

姚桑带你学Java与架构 375

springboot(4)

目录springboot配置类1.注解标签@Configuration@EnableCaching@Bean2.redis整合1.导入redis的依赖2.配置application.yml3.写redis配置类3.redis注解式开发1. @Cacheable2.@CachePut3.@CacheEvict springboot配置类 1.注解标签 @Configuration @Configur...

遥是此间桃花庵 245

浅谈SpringBoot和传统的框架的区别

SpringBoot是目前java开发很流行的一个框架,现在的java面试当中也基本上会问到的问题,具体需要查看java面试当中常见问题的可以关注小崔查看我的以往文章。如果有什么不对的地方欢迎批评指出,让我们共同探讨,共同进步。好了,废话不多说,直接进入正题.., 先抛出个问题:为什么SpringBoot能快速的成为目前开发当中炙手可热的框架?它和传统的SSM和SSH框架相比较有什么优势吗? ...

CalvinXCui的博客 2万+

Spring 基础注解及基于AspectJ的注解式切面编程

Spring 基于AspectJ的注解式切面编程 添加spring aop支持以及AspectJ依赖 &amp;lt;!-- Spring AOP 支持 --&amp;gt; &amp;lt;dependency&amp;gt; &amp;lt;groupId&amp;gt;org.springframework&amp;lt;/groupId&amp;gt;

longge0508的博客 340
上一篇: Linux上安装ZooKeeper
下一篇: jdbcTemplate并行流处理批量
RunnerSlowly
博客等级 码龄12年 1粉丝 23原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值