首页 > 其他分享 >关于使用Kotlin开发SpringBoot项目使用@Transactional和@Autowired的报错问题

关于使用Kotlin开发SpringBoot项目使用@Transactional和@Autowired的报错问题

时间:2023-04-04 16:01:22浏览次数:59  
标签:SpringBoot Autowired Kotlin Transactional lateinit 报错 使用 open

原文地址: 关于使用Kotlin开发SpringBoot项目使用@Transactional和@Autowired的报错问题 - Stars-One的杂货小窝

问题描述

最近在开发一个订单模块,需要出现异常就会触发数据回滚操作,首先就是想到了Spring Boot提供的@Transactiona注解功能,但是使用的时候,发现其他方法就是出现了lateinit property xx has not been initialized的错误

代码如下:

@RequestMapping("/testPay")
@RestController
open class PayController {


    @Autowired
    lateinit var xnGoodService: XnGoodService
    
    @GetMapping("test")
    @ResponseBody
    fun test(): AjaxJson {
        
        //这里会报错!! lateinit property xnGoodService has not been initialized
        val good = xnGoodService.getById("62479fb79d6f461b92d80c")
        println(good)
      
        return AjaxJson.getSuccess()

    }
    
    @RequestMapping("confirmOrder")
    @ResponseBody
    @Transactional(rollbackFor = [Exception::class])
    open fun confirmOrder(@RequestBody json: String): String {
        ...
    }    
}    

解决方案

解决方法很简单,由于kotlin默认类都是final类型,当你要使用@Transactional注解,需要将当前类用open关键字声明,同时要将类里的所有方法都用open关键字声明

上面的test方法里就是因为没有open声明,才会导致报错了

参考

标签:SpringBoot,Autowired,Kotlin,Transactional,lateinit,报错,使用,open
From: https://www.cnblogs.com/stars-one/p/17286709.html

相关文章

  • SpringBoot中如何实现业务校验,这种方式才叫优雅!
    大家好,我是飘渺。在日常的接口开发中,为了保证接口的稳定安全,我们一般需要在接口逻辑中处理两种校验:参数校验业务规则校验首先我们先看看参数校验。参数校验参数校验很好理解,比如登录的时候需要校验用户名密码是否为空,创建用户的时候需要校验邮件、手机号码格式是否准确。......
  • 在IDEA创建SpringBoot项目没有src等文件夹
    问题在IDEA创建SpringBoot项目的时候,有时候创建完成了,但是没有src等文件夹,可能前几分钟还行,突然就不行了。原因可能是网络等问题,我也还没弄懂,或者哪位大神知道的,可以留言告知一下。解决办法办法一:自己手动创建办法二:通过网页创建,下载压缩包,再通过IDEA打开即可阿里云:https:/......
  • npm报错 npm ERR! Unexpected token '.'
    报错如下图:  报错原因:node版本太高解决办法:卸载node重新安装,或者使用nvm切换版本 mvm安装使用教程:https://www.cnblogs.com/tianxinya/p/17286467.html......
  • Kubernetes——问题与解决方案一、k8s重启报错 :The connection to the server 192.168
    摘要Kubernetes运行过程中出现的各种问题,因此本人整理出本人遇到的有关于的k8s的相关问题和解决方案一、k8s重启报错:Theconnectiontotheserver192.168.102.149:6443wasrefused1.1现象k8s重启报错#kubectlgetpodsTheconnectiontotheserverxxx:6443wasrefused......
  • windows11的vmware启动报错
    一直正常的vmware今日启动报错:“UNEXPECTEDINCONSISTENCY;RUNfsckMANUALLY”.在initramfs后输入"fsck-y/dev/sda1"按回车,等检查结束后结可以继续了。注意:后面的硬盘路径要和报错的一致。......
  • 浅谈Kotlin中的函数
    vivo互联网技术微信公众号 作者:连凌能Kotlin,已经被Android官方宣布 kotlinfirst 的存在,去翻Android官方文档的时候,发现提供的示例代码已经变成了Kotlin。Kotlin的务实作风,提供了很多特性帮助开发者减少冗余代码的编写,可以提高效率,也能减少异常。本文简单谈下Kotlin中的函......
  • Kotlin 协程真的比 Java 线程更高效吗?
    vivo互联网技术微信公众号 作者:吴越网上几乎全部介绍Kotlin的文章都会说Kotlin的协程是多么的高效,比线程性能好很多,然而事情的真相真是如此么?协程的概念本身并不新鲜,使用C++加上内嵌汇编,一个基本的协程模型50行代码之内就可以完全搞出来。早在2013年国内就有团队开源了号称支持......
  • 2-SpringBoot开发单体应用
    SpringBoot开发单体应用1.SpringBootWeb开发使用SpringBoot的步骤:创建一个SpringBoot应用,选择我们需要的模块,SpringBoot就会默认将我们的需要的模块自动配置好;手动在配置文件中配置部分配置项目就可以运行起来了。专注编写业务代码,不需要考虑以前那样一大堆的配置......
  • SpringBoot 跨域 解决方案
    SpringBoot跨域看大部分文章都是通过WebMvcConfigurer来处理的,这样的话会导致其他配置紊乱发一下我常用的配置importorg.springframework.context.annotation.Bean;importorg.springframework.context.annotation.Configuration;importorg.springframework.web.cors.C......
  • SpringBoot之使用IDEA新建Web项目
    1.打开IDEA,点击左上角的File选项,打开菜单选择New,再打开菜单选择Project2.选择SpringInitializr,输入或选择项目相关的信息3.选择SpringBoot版本以及相应的依赖,并点击右下角的Create按钮进行项目创建4.项目创建完成后,点击左上角的File选项,打开菜单选择Settings选......