原文地址: 关于使用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声明,才会导致报错了

参考

关于使用Kotlin开发SpringBoot项目使用@Transactional和@Autowired的报错问题的更多相关文章

  1. Kotlin开发springboot项目(三)

    Kotlin开发springboot项目(三) 在线工具 https://www.sojson.com IDEA中Kotlin生成可执行文件1,项目使用Gradle构建2,在model的build.g ...

  2. Kotlin开发springboot项目(二)

    Kotlin开发springboot项目(二) 中文学习网站: https://www.kotlincn.net/ 研究一下kotlin的demo: https://github.com/JetBra ...

  3. Kotlin开发springboot项目(一)

    Kotlin开发springboot项目(一) Kotlin语言与Xtend语言有很多相似之处 为什么会存在这么多JVM语言? 现存的语言提供了太过受限制的功能,要不就是功能太过繁杂,导致语言的臃肿和 ...

  4. SpringBoot项目部署在同一个tomcat容器报错

    在一个Tomcat容器中部署了两个springboot的应用,在启动时发现一直都是第一个启动的项目能启动成功,第二个项目启动报错,错误信息如下: 2018-01-30 15:49:27.810 ERR ...

  5. 使用eclipse搭建springboot项目pom.xml文件第一行报错(Maven Configuration Problem)

    今天在https://start.spring.io/上搭建了一个2.1.5版本的springboot项目,但是把它导入后,pom.xml第一行报错了,查看Problems发现下面的错误 百度后发现方 ...

  6. springboot项目yml中使用中文注释报错的解决方法1

    启动springboot项目时报错:/application.yml.....这大致就是说application.yml有问题,那么目前我所知道的大致两种情况会报错,第一种是yml格式有问题,要注意缩 ...

  7. vue开发的项目中遇到的警告,报错,配置项目文件等合集(长期更新)

    1. Vue组件里面data()里面没有return时触发错误:Vue components Cannot read property '__ob__' of undefined 这个警告不解决会触发 ...

  8. 创建SpringBoot项目pom.xml文件第一行报错:Non-parseable POM E:\maven\repository\org\springframework\securit

    在编辑pom.xml时,第一行有个刺眼红色×,然后在Problems看到这个问题 [ERROR] The build could not read 1 project -> [Help 1]E: ...

  9. maven项目引用时,导入类报错,选择两个项目同时执行Maven update

    maven项目引用时,导入类报错,选择两个项目同时执行Maven update springboot引入第三方jar,需要扫描时加@ComponentScan("第三方的包名") ...

  10. vue项目初始化时npm run dev报错webpack-dev-server解决方法

    vue项目初始化时npm run dev报错webpack-dev-server解决方法 原因:这是新版webpack存在的BUG,卸载现有的新版本webpack,装老版本就好webpack-dev- ...

随机推荐

  1. RabbitMQ基础学习Full版

    RabbitMQ 消息队列在软件中的应用场景 异步处理上(优于原先的方式) 为什么优于呢? 首先,通常情况下,如上图我们其实不用消息队列的情况下,其实也可以不用100ms,不用allof即可 那么优势 ...

  2. Oracle配置DCD避免会话被防火墙强制断开

    今天有客户反馈应用测试连接Oracle数据库的会话半小时左右未做操作就会被中断,报错ORA-3113,询问数据库是否有这样的超时设置,能否取消掉这个限制? 登上环境查看监听日志发现连接的IP和数据库I ...

  3. 通过程序自动设置网卡的“internet共享”选项

    操作系统 : Windows 10_x64 [版本 10.0.19042.685] Windows下可以通过网卡共享进行上网,但是需要在网卡的属性里面进行设置,需要在视窗界面进行操作,不能实现自动化. ...

  4. Linux(Centos7)升级MySQL 5.7到8.0.31

    一.下载MySQL安装包 下载地址:https://downloads.mysql.com/archives/community/ 二.备份 mkdir /home/mysqlback mysqldu ...

  5. JS leetcode 宝石与石头 题解分析,正则字符组也有妙用

    壹 ❀ 引 简单问题简单做,今天的题目来自leetcode771. 宝石与石头,字符串相关的一道题,题目描述如下: 给定字符串J 代表石头中宝石的类型,和字符串 S代表你拥有的石头. S 中每个字符代 ...

  6. 从零开始的微信小程序入门教程(四),理解小程序事件与冒泡机制

    壹 ❀ 引 我在之前初识WXML与数据绑定两篇文章中,介绍了小程序静态模板与样式相关概念,以及小程序几种常用数据绑定方式,在知道这些知识后,我们可以写一些不算复杂的小程序页面,并能将一些自定义的数据渲 ...

  7. NC50500 凸多边形的划分

    题目链接 题目 题目描述 给定一个具有N个顶点的凸多边形,将顶点从1至N标号,每个顶点的权值都是一个正整数.将这个凸多边形划分成N-2个互不相交的三角形,试求这些三角形顶点的权值乘积和至少为多少. 输 ...

  8. OCR 03: PaddleOCR

    Catalog OCR 01: EasyOCR OCR 02: Tesseract-OCR OCR 03: PaddleOCR About Git repository https://github. ...

  9. Working with Dates in PL/SQL(PL/SQL中使用日期)

    Working with Dates in PL/SQL By Steven Feuerstein  史蒂芬.佛伊尔斯坦 The previous articles in this introduct ...

  10. 自古以来,JSON序列化就是兵家必争之地

    上文讲到使用ioutil.ReadAll读取大的Response Body,出现读取Body超时的问题. 前人引路 Stackoverflow的morganbaz的看法是: 使用iotil.ReadA ...