当前位置: 首页 > 知识库问答 >
问题:

Kotlin Spring Boot Autowired lateinit问题与quartz scheduler类

秦才
2023-03-14

我只是用kotlin和spring Boot实现quartz调度器。

Full Error Log : For reference


21:02:00.037 [DatabaseScheduler_Worker-1] ERROR org.quartz.core.JobRunShell - Job commentJobGroup.commentJob threw an unhandled Exception: 
kotlin.UninitializedPropertyAccessException: lateinit property userController has not been initialized
    at com.lovevirus.kotlinQuartzScheduler.scheduler.Jobs.CommentJob.getUserController(CommentJob.kt:17)
    at com.lovevirus.kotlinQuartzScheduler.scheduler.Jobs.CommentJob.execute(CommentJob.kt:21)
    at org.quartz.core.JobRunShell.run(JobRunShell.java:202)
    at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:573)
21:02:00.038 [DatabaseScheduler_Worker-1] ERROR org.quartz.core.ErrorLogger - Job (commentJobGroup.commentJob threw an exception.
org.quartz.SchedulerException: Job threw an unhandled exception.
    at org.quartz.core.JobRunShell.run(JobRunShell.java:213)
    at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:573)
Caused by: kotlin.UninitializedPropertyAccessException: lateinit property userController has not been initialized
    at com.lovevirus.kotlinQuartzScheduler.scheduler.Jobs.CommentJob.getUserController(CommentJob.kt:17)
    at com.lovevirus.kotlinQuartzScheduler.scheduler.Jobs.CommentJob.execute(CommentJob.kt:21)
    at org.quartz.core.JobRunShell.run(JobRunShell.java:202)
    ... 1 common frames omitted 

import org.quartz.Job
import org.quartz.JobExecutionContext
import org.springframework.stereotype.Component
import com.lovevirus.kotlinQuartzScheduler.controller.UserController;
import org.slf4j.Logger
import org.slf4j.LoggerFactory
import org.springframework.beans.factory.annotation.Autowired


@Component
class CommentJob : Job {
    private val logger: Logger = LoggerFactory.getLogger(CommentJob::class.java)
    @Autowired
    lateinit var userController : UserController;

    override fun execute(p0: JobExecutionContext?) {
      logger.debug("Inside Comment Job");
        userController.getUser();
       logger.debug("End Comment Job");
    }
}



Thanks in advance

共有1个答案

关玮
2023-03-14

您是否实现了一个自定义的SpringBeanJobFactory,它将允许依赖项自动化?

class AutowiringSpringBeanJobFactory : SpringBeanJobFactory(), ApplicationContextAware {

@Transient
private var beanFactory: AutowireCapableBeanFactory? = null

override fun setApplicationContext(applicationContext: ApplicationContext) {
    beanFactory = applicationContext.autowireCapableBeanFactory
}

override fun createJobInstance(bundle: TriggerFiredBundle): Any {
    val job = super.createJobInstance(bundle)
    beanFactory!!.autowireBean(job)
    return job
}

}

 类似资料:
  • 我面临QuartzScheduler触发器定义的问题。 2019年2月28日星期四16:27:30 IST:开始时间 0/20 0 0 ? * * * Cron表达式 2019年2月28日星期四16:29:30 IST结束时间 触发器schedulerAdderTrigger=触发器生成器。newTrigger()。withIdentity(触发键)。startAt(schedulerdata.g

  • 问题内容: 我不明白注释和之间的实际区别是什么? 扩展名还是它们具有完全不同的含义?什么时候应该使用它们?在服务层中使用Spring ,在DAO 中使用javax? 谢谢回答。 问题答案: 几年前,Spring定义了自己的Transactional注释以使Spring bean方法具有事务性。 Java EE 7终于做了同样的事情,现在除了EJB方法外,还允许CDI bean方法是事务性的。因此,

  • 主要内容:前言,粘包,拆包前言 粘包问题:一个请求里面带有多个响应,多个消息粘再一起给你发送回来; 拆包问题:一个消息拆成多个请求发送回来; 粘包 其中 一直递归调用,最终处理粘包问题核心代码 拆包 50生产者|60如何处理 有两种地方可能会发生拆包: 消息体的size 消息体 1. 消息体的size 2. 消息体

  • 为什么在例子中调用 time.sleep() 不会并发执行? 我的代码是异步的, 但它不能在两个浏览器标签页上并行运行. Many people’s first foray into Tornado’s concurrency looks something like this: class BadExampleHandler(RequestHandler): def get(self):

  • 问题内容: 我只是开始玩GWT,我很难让GWT + JAVA + JDO + Google AppEngine与DataStore一起工作。我试图按照不同的教程学习,但是没有运气。例如,我喜欢这些教程:TUT1 TUT2 我无法弄清楚如何才能完成这项工作。请查看我的简单代码,并告诉我需要做什么,以便可以将其持久保存到数据存储区: 1.地址实体 2.个人实体 3. RPCCalls 4. RPCCa

  • 我试图通过docker-compose文件部署kafka,或者通过安装kafka映像并手动运行它。当我开始运行kafka服务器(代理)时,这两个步骤都给我带来了错误 INFO初始化客户端连接,connectString=188.226.151.167:2181 sessiontimeout=6000 watcher=org.i0itec.zkclient.zkclient@323b36e0(org

  • 我需要调用MySQL存储过程从我的python脚本。作为参数之一,我传递一个Unicode字符串(俄语),但我得到一个错误; UnicodeEncodeError:“latin-1”编解码器无法对位置0-1中的字符进行编码:序号不在范围(256)内 我的脚本: 我已经读过设置可以解决这个问题,但是当我使用字符串时: 这给了我另一个错误; UnicodeEncodeError:'utf-8'编解码器

  • 谢谢大家,我成功了!我不得不装上一个开关 我是编码新手,不明白为什么我的代码不起作用。我想将所有三个按钮组合在一种方法下,android工作室向我显示所有内容都是无误编写的,但是当我运行应用程序时,它会立即关闭。 这是Bug Code 05-16 12:43:06.874 8223-8223/java.lang.reflect.Method.invokeE/AndroidRuntime: FATA