博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spring Boot 乐观锁加锁失败 - 集成AOP
阅读量:6717 次
发布时间:2019-06-25

本文共 1699 字,大约阅读时间需要 5 分钟。

Spring Boot with AOP

手头上的项目使用了Spring Boot, 在高并发的情况下,经常出现乐观锁加锁失败的情况(OptimisticLockingFailureException,同一时间有多个线程在更新同一条数据)。为了减少直接向服务使用者直接返回失败结果的情况,可以使用这种方式解决这个问题:

  • 捕获到OptimisticLockingFailureException之后,尝试一定次数的重试。超过重试次数再报错
  • 为了不修改原有的业务方法的代码,使用AOP来实现错误处理功能

先通过一个RESTFul应用看看Spring Boot怎么用AOP,之后再来处理乐观锁加锁失败的问题。关于怎么用Spring Boot创建RESTFul应用不在这里细说了。

1.Maven依赖包

1     
2
3
org.springframework.boot
4
spring-boot-starter-web
5
1.2.6.RELEASE
6
7
8
9
org.springframework.boot
10
spring-boot-starter-aop
11
1.2.6.RELEASE
12
13 14
15
junit
16
junit
17
test
18
4.12
19
20

2.创建切面定义类

请注意这里用到的几个标签都是必须的,否则没效果。
1 @Aspect 2 @Configuration 3 public class HelloAspect { 4  5     //切入点在实现类的方法,如果在接口,则会执行doBefore两次 6     @Pointcut("execution(* com.leolztang.sb.aop.service.impl.*.sayHi(..))") 7     public void pointcut1() { 8     } 9 10     @Around("pointcut1()")11     public Object doBefore(ProceedingJoinPoint pjp) throws Throwable {12         System.out.println("doBefore");13         return pjp.proceed();14     }15 }

 

3.在应用程序配置文件application.yml中启用AOP

spring.aop.auto: true

 

完成之后启动App,使用RESTFul客户端请求http://localhost:8080/greeting/{name}就可以看到控制台有输出"doBefore",说明AOP已经生效了。

 源代码地址:

 第二部分在这里:

转载于:https://www.cnblogs.com/leolztang/p/5448480.html

你可能感兴趣的文章
Linux/安卓+SPI以太网项目
查看>>
PostgreSQL MySQL 的一次速度测试
查看>>
C 语言程序设计
查看>>
Dns信息收集工具集合
查看>>
MQ产品比较-ActiveMQ-RocketMQ
查看>>
yii框架cridview的ajax更新
查看>>
STL容器选择
查看>>
android:layout_gravity 和 android:gravity 的区别
查看>>
嵌入式C题
查看>>
maven学习笔记
查看>>
说说Java线程池
查看>>
Linux挂载命令mount用法及参数详解
查看>>
Nginx 动静分离
查看>>
MySQL如何实现数组功能
查看>>
Android第四十七期 - WheelView沉浸式菜单栏
查看>>
Spring Boot--模板从JSP到Freemarker的若干问题
查看>>
Java内存模型的探究
查看>>
CentOS6.5 从源码编译安装 GCC-4.9.1 全程实录《第二部分:编译,安装,测试》
查看>>
反查bash历史记录--用Enki学Linux系列(16)
查看>>
Stateful firewall
查看>>