首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >石英与弹簧靴的问题

石英与弹簧靴的问题
EN

Stack Overflow用户
提问于 2018-06-30 15:56:44
回答 1查看 1.2K关注 0票数 1

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

一个大规模的项目是使用Quartz调度程序来安排一项任务,每天晚上9点运行。

然而,计划中的作业需要从属性文件中读取值,使用自动配线等方式获取一些bean。

当我使用@Au牛毛和@Value注释时,我发现这些值为null。

问题是Quartz在spring容器之外使用newJob()创建newJob()对象。如下面的代码所示。

代码语言:javascript
运行
复制
JobKey jobKey = new JobKey("NightJob", "9-PM Job");
JobDetail jobDetail = newJob(NightJob.class).withIdentity(jobKey)
                     .usingJobData("Job-Id", "1")
                     .build();

因此,包装jobDetailNightJob对象不能使用spring访问属性文件或bean。

这是我的NightJob

代码语言:javascript
运行
复制
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{
    }
}

我扫描了Stack溢出并列出了几种解决方案。我还阅读了评论,并列出了顶部的反评论。

建议1:由于与Spring的良好集成,摆脱了Quartz,使用了Spring批处理 计数器参数1: Spring批处理对于简单任务来说是过分的。使用@调度 建议2:使用spring提供的@调度注释和cron表达式 计数器参数2:如果移除Quartz,您的应用程序将无法在未来就绪。将来可能需要复杂的日程安排。 建议3 :使用spring接口ApplicationContextAware。 反参数3:大量的附加代码。挫败了Spring这个简单易用的概念

在Spring中是否有一种更简单的方法来访问实现Quartz作业的类中的属性值和自动线程对象(在这种情况下,是NightJob类)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-30 17:43:01

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51116396

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档