![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java
文章平均质量分 74
echola_mendes
一个后端程序猿,旨在让所有的技术简单化……
展开
-
@Transactional使用的注意事项
在项目中涉及到CRUD操作时,一般都会在方法上添加该注解,以为加上@Transactional,Spring就可以自动帮我们进行事务的开启、提交但事实上,还是会有一些坑导致事务失效。原创 2024-07-25 20:31:45 · 333 阅读 · 0 评论 -
Java之@Async注解的使用
Transactional方法内部调用 @Async 的方式,异步方法的事务是无法生效的。当方法中同时使用 @Transactional 与 @Async 时,事务是可以生效的。@Async方法内部调用@Transaction 的方式,异步方法事务是可以生效的。@Async无法进行事务管理,需要在内部使用 @Transactional。这个注解的作用在于可以让被标注的方法异步执行,但是有两个前提条件。需要异步执行的方法的所在类由Spring管理。需要异步执行的方法上添加@Async注解。原创 2024-07-24 15:27:30 · 335 阅读 · 0 评论 -
Java实现列表拖拽
在项目中,需要实现列表的上下拖拽,就是将活动当前id和目标id进行上下挤压,重新排序,每一个活动都有一个序号。直接使用Sortutils.sort工具类即可实现活动列表的拖拽功能。:将活动1拖拽到活动3的位置时,应该是活动2、活动3、活动1。:将活动3拖拽到活动1的位置时,应该是活动3、活动1、活动2。1、首先需要将需要活动id以及活动序号,添加上注解。保证分页进行拖拽后排序也是有效的。原创 2024-07-22 11:17:19 · 308 阅读 · 0 评论 -
Java锁之可重入锁
ReentrantLock可以实现公平锁和非公平锁ReentrantLock默认实现的是非公平锁ReentrantLock的获取锁和释放锁必须成对出现,锁了几次,也要释放几次释放锁的操作必须放在finally中执行实例方法tryLock()会尝试获取锁,会立即返回,返回值表示是否获取成功实例方法tryLock(long timeout, TimeUnit unit)会在指定的时间内尝试获取锁,指定的时间内是否能够获取锁,都会返回,返回值表示是否获取锁成功,该方法会响应线程的中断。原创 2024-07-19 21:09:05 · 947 阅读 · 0 评论 -
当@Transactional遇上@synchronized生产问题
Transactional注解通过AOP实现事务管理,当标注该注解的方法执行完成后才提交事务,而synchronized代码块又是在一个事务内,就会出现第一个线程释放锁后但是事务还没提交,第二个线程就进入同步代码块获取到未提交的数据库数。@Transactional事务管理是基于动态代理对象的代理逻辑实现的,那么如果在类内部调用类内部的事务方法,这个调用事务方法的过程并不是通过代理对象来调用的,而是直接通过this对象来调用方法,绕过的代理对象,肯定就是没有代理逻辑了。Controller类。原创 2024-07-17 11:01:53 · 686 阅读 · 0 评论