gpt4 book ai didi

java - 使用 Quartz 动态调度作业

转载 作者:行者123 更新时间:2023-12-01 05:03:16 25 4
gpt4 key购买 nike

我在 Spring 中实现了一个计划作业,我将 Spring 3.1.1 与 Hibernate 和 Struts2 一起使用。配置工作正常,但我想动态更改 de cron,所以我找到了几个示例,但无法实现它们,到处都是不同的配置,我只需要从数据库读取 cron 值而不是配置文件。这有可能吗?

我的配置现在看起来像这样:

<!-- Scheduler Tasks -->
<bean name="statTask" class="com.bvc.spring.schedulers.MarketStatusJob"></bean>

<!-- Scheduler jobs -->
<bean id="statJobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject" ref="statTask" />
<property name="targetMethod" value="execute" />
</bean>

<!-- Cron Triggers -->
<bean id="statCronTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail" ref="statJobDetail" />
<property name="cronExpression" value="0 30 12 1/1 * ? *"/>
</bean>

<!-- Triggers -->
<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref bean="statCronTrigger"/>
</list>
</property>
</bean>

提前感谢大家的帮助。

最佳答案

最简单的方法可能是子类 CronTriggerBean并在重写的 setCronExpression(..) 中实现数据库属性解析方法,您可以在其中转到数据库,获取所需的 cron,然后调用 super.setCronExpression(dbValue)

另一种更难的方法是实现 PropertyPlaceholderConfigurer从数据库而不是属性文件中读取它们。不过,这可能并非微不足道。不支持这一点,因为更习惯的是从属性文件中读取值。另请注意,您将无法在执行期间动态更改 cron。

关于java - 使用 Quartz 动态调度作业,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13066886/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com