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

使用石英和Spring靴

李胡媚
2023-03-14

所以我有一个技术挑战我需要帮助。

一个大型项目正在使用Quartz调度程序调度一个作业,使其在每晚9点运行。
然而,调度的作业需要从属性文件中读取值,使用自动布线获取一些bean等。

当我使用@autowired和@value注释时,我发现这些值为空。

问题是Quartz在spring容器外部使用newJob()创建JobDetail对象。可以在下面的代码中看到。

JobKey jobKey = new JobKey("NightJob", "9-PM Job");
JobDetail jobDetail = newJob(NightJob.class).withIdentity(jobKey)
                     .usingJobData("Job-Id", "1")
                     .build();

因此,包装nightjobjobdetail对象无法使用Spring访问属性文件或bean。

public class NightJob implements Job{

    //@Value to read from property file; here
    //@Autowired to use some beans; here

    @Override
    public void execute(JobExecutionContext context) throws JobExecutionException{
    }
}

我扫描了堆栈溢出,并列出了几个解决方案。我还通读了评论,列出了排在前面的反评论。

建议1:去掉石英,使用Spring Batch,因为它与Spring Boot很好地结合在一起

反论点1:Spring批处理对于简单的任务来说是矫枉过正的。使用@scheduled

参数3:大量附加代码。击败了Spring靴的简单易用概念

在Spring Boot中,有没有更简单的方法来访问实现Quartz作业的类中的属性文件值和自带对象(在这种情况下是NightJob类)

共有1个答案

朱博实
2023-03-14

正如注释中所写的,Spring通过提供setter方法支持bean注入Quartz作业:https://docs.Spring.io/spring-boot/docs/current/reference/html/boot-features-quartz.html

 类似资料:
  • 问题内容: 有没有办法将石英作为基础调度程序? 我可以想到两件事,但都需要做一些工作: 创建一个将解析注解并注册石英作业的自定义 实施委托石英的工具。 问题是:以上两个选项是否已经编写过,是否还有另一个选项? 问题答案: 我最终制作了自己的弹簧石英“桥”。我打算建议将其作为春季的改进。 首先,我创建了一个新注释,该注释将放置在实现quartz Job接口的类上: (请注意原型作用域-石英假定每个作

  • 谢谢你的帮助!

  • 我使用的是spring batch 3.0.2和quartz 2.2.1。两者都使用由两个API提供的元表。Spring批处理作业由quartz调度,并在调度时间调用。Quartz和Spring批处理表中都有所有信息。 现在我想要得到工作运行状态,这是由石英时间表。我不知道,我怎么能把石英作业键和Spring批联系起来。这样我就可以找到quartz系统调度的spring批处理作业的运行状态。

  • 另外,如果我使用下面的语句而不是自动调用Spring Quartz调度器,那么作业将成功激发 请让我知道我做错了什么...

  • 乡亲们, 我正在尝试用Quartz调度器实现Spring boot,以便在java中调度作业。我的经理建议根据作业id为所有作业使用具有不同实施服务的单个作业。但我不能说服所有服务实施都使用单个作业。 请指导我使用多个服务类的单个作业或为每个服务编写每个作业。 提前感谢。。

  • 我正在开发Spring MVC Web应用程序,它使用JDBC Quartz Scheduler来执行作业。这个Web应用程序有多个服务,每个服务都打包为jar并具有关联的作业。我在Web项目中有一个石英配置,在该配置下我为作业、触发器和调度程序创建了bean。在调度程序配置下,我指定了触发器列表。当我们开始我们的项目时,这很好。随着我们开始添加功能,作业数量增加,现在大约有100个。维护这个文件