zoukankan      html  css  js  c++  java
  • @Transactional+@Autowired出现的lateinit property xx has not been initialized错误

    1 问题描述

    Kotlin编写Spring Boot,在业务层中使用@Transactional+@Autowired时出现如下错误:

    lateinit property dao has not been initialized
    

    在这里插入图片描述

    出错代码如下:

    在这里插入图片描述

    2 解决办法

    因为Kotlin类默认是final的,加上@Transactional后编译器提示需要open

    在这里插入图片描述

    但是加上open后没用,因此把@Transactional去掉后发现不会报错:

    在这里插入图片描述

    因此怀疑是@Transactional的问题,因为需要在类上加上open,所以尝试性地在对应的方法上面也加上open

    在这里插入图片描述

    问题得到解决。

    3 原因

    因为@Transactional实际上是通过反射获取Bean的注解信息,利用AOP实现的,而在Kotlin中使用AOP需要在类或方法上加上open

  • 相关阅读:
    阴影及定位
    选择器高级、样式及布局
    css的导入与基础选择器
    html知识
    ORM
    python实现进度条
    MySQL单表查询
    一、HTTP
    mysql4
    练习——MySQL
  • 原文地址:https://www.cnblogs.com/6b7b5fc3/p/13751639.html
Copyright © 2011-2022 走看看