spring-framework / org.springframework.scheduling.quartz / QuartzJobBean

QuartzJobBean

abstract class QuartzJobBean : Job

Simple implementation of the Quartz Job interface, applying the passed-in JobDataMap and also the SchedulerContext as bean property values. This is appropriate because a new Job instance will be created for each execution. JobDataMap entries will override SchedulerContext entries with the same keys.

For example, let's assume that the JobDataMap contains a key "myParam" with value "5": The Job implementation can then expose a bean property "myParam" of type int to receive such a value, i.e. a method "setMyParam(int)". This will also work for complex types like business objects etc.

Note that the preferred way to apply dependency injection to Job instances is via a JobFactory: that is, to specify SpringBeanJobFactory as Quartz JobFactory (typically via SchedulerFactoryBean#setJobFactory SchedulerFactoryBean's "jobFactory" property}). This allows to implement dependency-injected Quartz Jobs without a dependency on Spring base classes.

Author
Juergen Hoeller

Since
18.02.2004

See Also
org.quartz.JobExecutionContext#getMergedJobDataMap()org.quartz.Scheduler#getContext()SchedulerFactoryBean#setSchedulerContextAsMapSpringBeanJobFactorySchedulerFactoryBean#setJobFactory

Constructors

<init>

QuartzJobBean()

Simple implementation of the Quartz Job interface, applying the passed-in JobDataMap and also the SchedulerContext as bean property values. This is appropriate because a new Job instance will be created for each execution. JobDataMap entries will override SchedulerContext entries with the same keys.

For example, let's assume that the JobDataMap contains a key "myParam" with value "5": The Job implementation can then expose a bean property "myParam" of type int to receive such a value, i.e. a method "setMyParam(int)". This will also work for complex types like business objects etc.

Note that the preferred way to apply dependency injection to Job instances is via a JobFactory: that is, to specify SpringBeanJobFactory as Quartz JobFactory (typically via SchedulerFactoryBean#setJobFactory SchedulerFactoryBean's "jobFactory" property}). This allows to implement dependency-injected Quartz Jobs without a dependency on Spring base classes.

Functions

execute

fun execute(context: JobExecutionContext): Unit

This implementation applies the passed-in job data map as bean property values, and delegates to executeInternal afterwards.