gpt4 book ai didi

java - 如何将 Quartz 调度程序连接到我的 Spring 上下文中?

转载 作者:IT老高 更新时间:2023-10-28 13:48:40 26 4
gpt4 key购买 nike

我有一个应用程序,我想在其中使用 Quartz Scheduler 对象。我已经阅读了有关此的 Spring 文档,他们建议像这样使用 SchedulerFactoryBean:

<bean id="schedulerFactoryBean" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="autoStartup">
<value>true</value>
</property>
<property name="configLocation" value="classpath:quartz.properties" />
</bean>

配置如下:

org.quartz.scheduler.skipUpdateCheck = true
org.quartz.scheduler.instanceName = MyQuartzScheduler
org.quartz.scheduler.jobFactory.class = org.quartz.simpl.SimpleJobFactory
org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool
org.quartz.threadPool.threadCount = 5
log4j.rootLogger=INFO, stdout
log4j.logger.org.quartz=DEBUG
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] (%F:%L) - %m%n

现在,如果我想将 schedulerFactoryBean 注入(inject)到我的一个对象中,我会收到一个异常声明:

无法将 [org.quartz.impl.StdScheduler] 类型的构造函数参数值转换为所需类型 [org.springframework.scheduling.quartz.SchedulerFactoryBean]:

为什么我得到的是 StdScheduler 而不是 schedulerFactoryBean?我错过了配置步骤吗?

最佳答案

一个 SchedulerFactoryBean 是一个 FactoryBean 所以它 can't be used like a normal bean .当你将它注入(inject)到其他 bean 中时,Spring 将注入(inject)工厂生成的 org.quartz.Scheduler 对象,它不会注入(inject)工厂本身。

通常以它产生的对象命名工厂 bean,因为当您引用它时它会更好地阅读。例如:

<bean id="scheduler" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="autoStartup">
<value>true</value>
</property>
<property name="configLocation" value="classpath:quartz.properties" />
</bean>

然后你可以像这样配置一个需要Scheduler的对象:

<bean id="beanThatNeedsScheduler" class="beanThatNeedsScheduler">
<!-- Will inject a Scheduler not a SchdulerFactoryBean -->
<property name="scheduler" ref="scheduler" />
</bean>

或者使用注解:

@Component
public class BeanThatNeedsScheduler {

@Autowired;
private Scheduler scheduler

...
}

关于java - 如何将 Quartz 调度程序连接到我的 Spring 上下文中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21557066/

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