kotlin 实战小记: 使用@Transactional + @Autowired出现的lateinit property xx has not been initialized错误

一、问题

新的项目试用kotlin,在业务类上添加@Transactional,并使用@Autowired引用mapper、配置类等,测试执行时报lateinit property prop has not been initialized

二、程序样例(报错的)

/**
 * @author zc
 * @date 2024/06/06 16:39
 * @desc 资源采集
 */
@Service
@Transactional
open class ResourceCollectService {

    @Autowired
    private lateinit var cmReadMapper: CmReadMapper
    
    @Autowired
    private lateinit var exportUtil: ExportUtil

    @Autowired
    private lateinit var prop: Prop

    /**
     * Execute
     * 资源采集
     * @param cmEnums
     */
    fun execute(cmEnum: CmEnum, channelSftp: ChannelSftp) {
        val timeFormatter = DateTimeFormatter.ofPattern("yyyyMMddHHmmss")
        val createTime = timeFormatter.format(LocalDateTime.now().plusHours(-1))
        val collectTime = timeFormatter.format(LocalDateTime.now())
        val dateTimeFormatter = DateTimeFormatter.ofPattern("yyyyMMdd")
        //统计前一天数据
        val date = dateTimeFormatter.format(LocalDate.now().plusDays(-1))
        when (cmEnum) {
            CmEnum.数据中心 -> {
                val dataCenters = mutableListOf<CmDataCenter>()
                dataCenters.add(CmDataCenter())
                if (!CollectionUtils.isEmpty(dataCenters)) {
                    val fileName = CmEnum.数据中心.value.uppercase() + "_" + createTime + "_" + collectTime + ".gz"
                    val localFilePath = prop.source + DataEnum.resource + "/" + dat
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值