- synchronized 锁的是这个方法,
- Transactional 的事务是Spring的AOP开启的。进入这个方法前,AOP会先开启事物,然后进入方法,此时会加锁,
- 当方法结束后,锁释放,然后才会提交事物。如果在释放锁和提交事物之间有其他线程请求,然后该线程继续加锁。
- 这种情况会导致程序不安全。所以应该在开启事物前加锁。
public synchronized void synchronizedShareEstate(String shareAssistGuide) {
shareService.shareEstate(shareAssistGuid);
}
@Transactional
public void shareEstate(String shareAssistGuid) {
}