Package org.springframework.scheduling.quartz

# Class JobDetailFactoryBean

java.lang.Object
org.springframework.scheduling.quartz.JobDetailFactoryBean

All Implemented Interfaces:
  `org.springframework.beans.factory.Aware`, `org.springframework.beans.factory.BeanNameAware`, `org.springframework.beans.factory.FactoryBean<JobDetail>`, `org.springframework.beans.factory.InitializingBean`, `org.springframework.context.ApplicationContextAware`

public class JobDetailFactoryBean extends Object implements org.springframework.beans.factory.FactoryBean<JobDetail>, org.springframework.beans.factory.BeanNameAware, org.springframework.context.ApplicationContextAware, org.springframework.beans.factory.InitializingBean
A Spring `FactoryBean` for creating a Quartz `JobDetail` instance, supporting bean-style usage for JobDetail configuration.

`JobDetail(Impl)` itself is already a JavaBean but lacks sensible defaults. This class uses the Spring bean name as job name, and the Quartz default group ("DEFAULT") as job group if not specified.

Since:
  3.1
Author:
  Juergen Hoeller
See Also:
  - `setName(java.lang.String)`
  - `setGroup(java.lang.String)`
  - `BeanNameAware`
  - `Scheduler.DEFAULT_GROUP`

## Field Summary

### Fields inherited from interface org.springframework.beans.factory.FactoryBean

`OBJECT_TYPE_ATTRIBUTE`

## Constructor Summary

Constructors
Constructor
Description
`JobDetailFactoryBean()`

## Method Summary

Modifier and Type
Method
Description
`void`
`afterPropertiesSet()`
`JobDataMap`
`getJobDataMap()`
Return the job's JobDataMap.
`JobDetail`
`getObject()`
`Class<?>`
`getObjectType()`
`boolean`
`isSingleton()`
`void`
`setApplicationContext(org.springframework.context.ApplicationContext applicationContext)`
`void`
`setApplicationContextJobDataKey(String applicationContextJobDataKey)`
Set the key of an ApplicationContext reference to expose in the JobDataMap, for example "applicationContext".
`void`
`setBeanName(String beanName)`
`void`
`setDescription(String description)`
Set a textual description for this job.
`void`
`setDurability(boolean durability)`
Specify the job's durability, i.e.
`void`
`setGroup(String group)`
Specify the job's group.
`void`
`setJobClass(Class<? extends Job> jobClass)`
Specify the job's implementation class.
`void`
`setJobDataAsMap(Map<String,?> jobDataAsMap)`
Register objects in the JobDataMap via a given Map.
`void`
`setJobDataMap(JobDataMap jobDataMap)`
Set the job's JobDataMap.
`void`
`setName(String name)`
Specify the job's name.
`void`
`setRequestsRecovery(boolean requestsRecovery)`
Set the recovery flag for this job, i.e.

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

## Constructor Details

### JobDetailFactoryBean

public JobDetailFactoryBean()

## Method Details

### setName

public void setName(String name)
Specify the job's name.

### setGroup

public void setGroup(String group)
Specify the job's group.

### setJobClass

public void setJobClass(Class<? extends Job> jobClass)
Specify the job's implementation class.

### setJobDataMap

public void setJobDataMap(JobDataMap jobDataMap)
Set the job's JobDataMap.

See Also:
  - `setJobDataAsMap(java.util.Map<java.lang.String, ?>)`

### getJobDataMap

public JobDataMap getJobDataMap()
Return the job's JobDataMap.

### setJobDataAsMap

public void setJobDataAsMap(Map<String,?> jobDataAsMap)
Register objects in the JobDataMap via a given Map.

These objects will be available to this Job only, in contrast to objects in the SchedulerContext.

Note: When using persistent Jobs whose JobDetail will be kept in the database, do not put Spring-managed beans or an ApplicationContext reference into the JobDataMap but rather into the SchedulerContext.

Parameters:
  `jobDataAsMap` - a Map with String keys and any objects as values (for example Spring-managed beans)
See Also:
  - `SchedulerFactoryBean.setSchedulerContextAsMap(java.util.Map<java.lang.String, ?>)`

### setDurability

public void setDurability(boolean durability)
Specify the job's durability, i.e. whether it should remain stored in the job store even if no triggers point to it anymore.

### setRequestsRecovery

public void setRequestsRecovery(boolean requestsRecovery)
Set the recovery flag for this job, i.e. whether the job should get re-executed if a 'recovery' or 'fail-over' situation is encountered.

### setDescription

public void setDescription(String description)
Set a textual description for this job.

### setBeanName

public void setBeanName(String beanName)

Specified by:
  `setBeanName` in interface `org.springframework.beans.factory.BeanNameAware`

### setApplicationContext

public void setApplicationContext(org.springframework.context.ApplicationContext applicationContext)

Specified by:
  `setApplicationContext` in interface `org.springframework.context.ApplicationContextAware`

### setApplicationContextJobDataKey

public void setApplicationContextJobDataKey(String applicationContextJobDataKey)
Set the key of an ApplicationContext reference to expose in the JobDataMap, for example "applicationContext". Default is none. Only applicable when running in a Spring ApplicationContext.

In case of a QuartzJobBean, the reference will be applied to the Job instance as bean property. An "applicationContext" attribute will correspond to a "setApplicationContext" method in that scenario.

Note that BeanFactory callback interfaces like ApplicationContextAware are not automatically applied to Quartz Job instances, because Quartz itself is responsible for the lifecycle of its Jobs.

Note: When using persistent job stores where JobDetail contents will be kept in the database, do not put an ApplicationContext reference into the JobDataMap but rather into the SchedulerContext.

See Also:
  - `SchedulerFactoryBean.setApplicationContextSchedulerContextKey(java.lang.String)`
  - `ApplicationContext`

### afterPropertiesSet

public void afterPropertiesSet()

Specified by:
  `afterPropertiesSet` in interface `org.springframework.beans.factory.InitializingBean`

### getObject

@Nullable public JobDetail getObject()

Specified by:
  `getObject` in interface `org.springframework.beans.factory.FactoryBean<JobDetail>`

### getObjectType

public Class<?> getObjectType()

Specified by:
  `getObjectType` in interface `org.springframework.beans.factory.FactoryBean<JobDetail>`

### isSingleton

public boolean isSingleton()

Specified by:
  `isSingleton` in interface `org.springframework.beans.factory.FactoryBean<JobDetail>`