7、SpringBoot2之整合事务及AOP

这篇具有很好参考价值的文章主要介绍了7、SpringBoot2之整合事务及AOP。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

本文在SpringBoot2之整合Mybatis的基础上进行

7.1、整合事务

7.1.1、mapper接口

7、SpringBoot2之整合事务及AOP

    int deleteEmployeeById(int id);

7.1.2、mapper映射文件

7、SpringBoot2之整合事务及AOP

    <delete id="deleteEmployeeById" parameterType="int">
        delete from t_emp where emp_id = #{id}
    </delete>

7.1.3、业务层接口及实现类

7、SpringBoot2之整合事务及AOP

package online.liaojy.service;

/**
 * @author liaojy
 * @date 2023/12/25 - 6:31
 */
public interface EmployeeService {

    int deleteEmployeeById(int id);

}

7、SpringBoot2之整合事务及AOP

注意:只要引入 spring-boot-starter-jdbc 启动器(详见6.1节),spring boot 便会自动配置好 DataSourceTransactionManager ;
因此,只需在方法(或者类)加上 @Transactional 注解,即可进行事务管理。

package online.liaojy.service.impl;

import online.liaojy.mapper.EmployeeMapper;
import online.liaojy.service.EmployeeService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

/**
 * @author liaojy
 * @date 2023/12/25 - 6:33
 */
@Service
public class EmployeeServiceImpl implements EmployeeService {

    @Autowired
    private EmployeeMapper employeeMapper;

    @Transactional
    @Override
    public int deleteEmployeeById(int id) {

        // 删除一条数据
        int rowsOfDelete = employeeMapper.deleteEmployeeById(id);
        System.out.println("已成功删除"+rowsOfDelete+"行数据");

        // 制造一个异常
        int i = 1/0;

        return rowsOfDelete;
    }

}

7.1.4、控制层方法

7、SpringBoot2之整合事务及AOP

    @Autowired
    private EmployeeService employeeService;

    @RequestMapping("/deleteEmployeeById")
    public String deleteEmployeeById(){
        int i = employeeService.deleteEmployeeById(26);
        return "删除成功";
    }

7.1.5、测试效果

7、SpringBoot2之整合事务及AOP

测试前的数据

7、SpringBoot2之整合事务及AOP

测试时发生异常

7、SpringBoot2之整合事务及AOP

测试后的数据没变化,说明事务回滚功能正常

7.2、整合AOP

7.2.1、导入AOP启动器依赖

7、SpringBoot2之整合事务及AOP

        <!-- AOP启动器的依赖 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-aop</artifactId>
        </dependency>

7.2.2、创建切面类

7、SpringBoot2之整合事务及AOP

package online.liaojy.advice;

import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component;

/**
 * @author liaojy
 * @date 2023/12/25 - 6:51
 */
@Component
@Aspect
@Order(5)
public class LogAdvice {

    @Before("execution(* online.liaojy.service.*.*.*(..))")
    public void beforeLog(JoinPoint joinPoint){
        // 获取连接点所对应目标方法所在类的名称
        String className = joinPoint.getSignature().getClass().getSimpleName();
        // 获取连接点所对应目标方法的名称
        String methodName = joinPoint.getSignature().getName();

        System.out.println(className+"类的"+methodName+"方法开始执行了!");
    }

}

7.2.3、测试效果

7、SpringBoot2之整合事务及AOP文章来源地址https://www.toymoban.com/news/detail-778572.html

到了这里,关于7、SpringBoot2之整合事务及AOP的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • java SpringBoot2.7整合Elasticsearch(ES)7 进行文档增删查改

    首先 我们在 ES中加一个 books 索引 且带有IK分词器的索引 首先 pom.xml导入依赖 application配置文件中编写如下配置 spring.elasticsearch.hosts: 172.16.5.10:9200 我这里是用的yml格式的 告诉它指向 我们本地的 9200服务 然后 我们在启动类同目录下 创建一个叫 domain的包 放属性类 然后在这个包

    2024年02月19日
    浏览(46)
  • Springboot 整合事务

    目录 事务介绍 事务的ACID特性 事物的隔离级别 事务的传播机制 只读 事务超时 回滚规则 事务的配置方式 声明式事务 编程式事务 @Transactional失效问题 Spring 事务的对于数据库的操作,要么执行,要不都不执行,在事务中都执行成功就会提交失败就会发生回滚。 原子性(Atom

    2024年02月03日
    浏览(23)
  • 04 SpringBoot整合Druid/MyBatis/事务/AOP+打包项目

    项目结构: 引入依赖: 启动类: 实体类: Controller类: Druid配置文件application.yaml : 启动项目后进入8080/user/getUser即可获得返回的json. 先看看总体的步骤: 导入依赖:在pom.xml中添加MyBatis和数据库驱动的相关依赖。 配置数据源: application.yml 中配置 数据库连接信息,包括数据

    2024年01月21日
    浏览(39)
  • Redis(发布订阅、事务、redis整合springboot、集成 Spring Cache)

    目录 一.redis的发布订阅 1、什么 是发布和订阅 2、Redis的发布和订阅 3、发布订阅的代码实现 二.Redis事务 1.事务简介 1、在事务执行之前 如果监听的key的值有变化就不能执行 2、在事务执行之前 如果监听的key的值没有变化就能执行 3、Exec之前就出现错误 4、Exec之后出现的错误

    2024年01月24日
    浏览(50)
  • Redis-redis事务、乐观锁、Jedis、SpringBoot整合Redis

    1、事务 ①开启事务、执行事务 ② 取消事务 ③ 编译性异常(代码有问题! 命令有错!),事务中所有的命令都不会被执行! ④ 运行时异常(I/O),如果事务队列中存在语法行,那么执行命令的时候,其他命令是可以正常执行的,错误命令抛出异常! (区别于直接命令错误

    2024年01月16日
    浏览(41)
  • 【万字长文】SpringBoot整合Atomikos实现多数据源分布式事务(提供Gitee源码)

    前言:在最近的实际开发的过程中,遇到了在多数据源的情况下要保证原子性的问题,这个问题当时遇到了也是思考了一段时间,后来通过搜集大量资料与学习,最后是采用了分布式事务来解决这个问题,在讲解之前,在我往期的博客提前搭好了一个SpringBoot整合MyBatis搭建M

    2024年02月14日
    浏览(40)
  • 最新版 !快速掌握 JDK17 + springboot3 + springcloud Alibaba : 10、Seata 整合实现分布式事务

    上一节成功启动了seata,传送门: https://blog.csdn.net/qq_16089135/article/details/133989446 1.1 官方文档 中文文档 Seata 是什么 1.2 模式分类 AT :基于支持本地 ACID 事务的关系型数据库。 Java 应用,通过 JDBC 访问数据库。 整体机制:二阶段提交。 一阶段:业务数据和回滚日志记录在同一

    2024年02月06日
    浏览(53)
  • 【SpringBoot2】SpringBoot开发实用篇

    ​ 什么是热部署?简单说就是你程序改了,现在要重新启动服务器,嫌麻烦?不用重启,服务器会自己悄悄的把更新后的程序给重新加载一遍,这就是热部署。 ​ 热部署的功能是如何实现的呢?这就要分两种情况来说了,非springboot工程和springboot工程的热部署实现方式完全

    2023年04月25日
    浏览(42)
  • 1、Springboot2简介

    在学习 SpringBoot 之前,建议先具备 SpringMVC(控制层)、Spring(业务层)和 Mybatis(持久层)的相关知识 Spring 框架虽然很出色,但是有一个明显的缺点:配置文件过于繁琐和复杂; 在单体项目中,因为配置文件只需要编写一遍即可,所以该缺点只是一个小问题; 在微服务项目

    2024年02月05日
    浏览(37)
  • SpringBoot2-核心技术(一)

    1. properties 同以前的用法 2. yaml YAML : “YAML Ain‘t Markup Language ”(yaml 不是一种递归标记语言) 的递归缩写, 在开发这种语言时,YAML 的意思是:Yet Another Markup Language (仍是一种标记语言) 非常适合用来做以数据为中心的配置文件 1. 基本语法 key: value ; value与: 之间存在空格

    2024年02月07日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包