首页 > 其他分享 >Spring Boot - @Transactional 标注的方法如何使用 synchronized?

Spring Boot - @Transactional 标注的方法如何使用 synchronized?

时间:2023-10-31 23:55:20浏览次数:36  
标签:synchronized Spring Transactional criteria discussionMapper model public

这篇文章中有说到 @Transactional 标注的方法也有锁的情况下会出现一些问题,具体请看 Spring Boot 锁

而且 Idea 也会标一个黄色波浪线提示你。我是这样做的,仅供参考。

file:[DiscussionService.java]
@Service
public class DiscussionService implements IDiscussionService {
    private final DiscussionMapper discussionMapper;
    private final TransactionalWrapper transactionalWrapper;

    public DiscussionService(DiscussionMapper discussionMapper) {
        this.discussionMapper = discussionMapper;
        transactionalWrapper = new TransactionalWrapper(discussionMapper);
    }

    @Override
    public synchronized int upgradeArticle(ArticleModel model, DiscussionCriteria criteria) {
        return transactionalWrapper.doUpgradeArticle(model, criteria);
    }
}

@AllArgsConstructor
class TransactionalWrapper {

    private DiscussionMapper discussionMapper;

    @Transactional
    public int doUpgradeArticle(ArticleModel model, DiscussionCriteria criteria) {
        try {
            // ...
            Integer affectRows = discussionMapper.upgradeArticle(model);
            return affectRows > 0 ? 1 : 0;
        } catch (Exception e) {
            throw new JdbcErrorException(e);
        }
    }

}

标签:synchronized,Spring,Transactional,criteria,discussionMapper,model,public
From: https://www.cnblogs.com/Himmelbleu/p/17802069.html

相关文章

  • springboot web使用mybatis访问mysql库
    思想:重点:springboot项目可以配置mybatis必须的内容。默认配置文件为“main/resources/application.properties”(yml为其另一种写法,感兴趣自己去查)一切编码跟普通的mybatis相同。注意:xml文件最好放在资源文件夹resources下面,以便编译时直接复制。由此引起需要在springboot......
  • Spring Boot - ffmpeg 获得 m3u8 列表和 ts 文件,前端请求视频流进行播放
    安装ffmpegFFmpeg下载地址:GitHubreleases。请下载:ffmpeg-master-latest-win64-gpl-shared.zip压缩包。解压到你系统盘任意位置(前提是你以后找得到这玩意儿在哪)。接下来就是配置其环境变量,所有的环境变量都是配置它的启动文件的路径到你系统的Path,基本上都是(也有例外的?)。如......
  • Exception in thread "main" java.lang.NoSuchMethodError: org.springframework.util
    我的项目是springboot架构,项目启动报错如下Exceptioninthread"main"java.lang.NoSuchMethodError:org.springframework.util.Assert.isInstanceOf(Ljava/lang/Class;Ljava/lang/Object;Ljava/util/function/Supplier;)V atorg.springframework.boot.logging.logback.Logb......
  • spring ApplicationContext版本的快速入门
     代码示例:publicinterfaceUserDao{}-------------------------------------------------------------publicclassUserDaoImplimplementsUserDao{}----------------------------------------------------------publicinterfaceUserService{}---------------------......
  • spring BeanFactory版本的快速入门
       代码示例:  publicstaticvoidmain(String[]args){//创建一个工厂对象DefaultListableBeanFactorybeanFactory=newDefaultListableBeanFactory();//创建一个读取器(读xml文件)XmlBeanDefinitionReaderreader=newXmlBeanDefinitionRead......
  • SpringMVC是什么?
    SpringMVC使用MVC架构模式的思想,将Web应用进行职责解构,把一个复杂的Web应用划分成模型(Model)、控制器(Contorller)以及视图(View)三层,有效地简化了Web应用的开发,降低了出错风险,同时也方便了开发人员之间的分工配合。SpringMVC各层的职责如下:Model:负责对请求进行处理,并将......
  • SpringMVC
    1.SpringMVC:特点1.1:基于MVC架构1.2:容易理解,上手快,使用简单1.3:方便与Spring整合1.4:SpringMVC强化注解的使用,控制层(Controller)@Controller2.第一个SpringMVC注解的程序的创建和使用注解式开发:在代码中通过类与方法的注解,完成处理2.1:创建项目,添加jar2.2:配置注册中央控制器(中央调度......
  • 微服务SpringCloud父工程pom依赖
    <!--设置为pom,管理依赖--><packaging>pom</packaging><properties><java.version>1.8</java.version><maven.compiler.source>8</maven.compiler.source><maven.compiler.target>8<......
  • spring发送邮件笔记
    文章目录引入依赖配置代码附件url地址为空会不会报错接收方邮件地址错误会不会报错引入依赖推荐用spring集成依赖,不用一个包一个包找了。<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-mail</artifactId></dependency>配......
  • 【面试专题】Spring篇①
    目录1.你知道Spring框架中有哪些重要的模块吗?2.谈谈你对IOC的认识。3.谈谈你对AOP的认识。4.在实际写代码时,有没有用到过AOP?用过的话是在什么地方或者什么场景下?5.Spring中的事务是如何实现的6.Transaction在哪些情况下可能会失效?7.说说你对Spring中的Bean的理解。8.......