org.springframework.scheduling.quartz

## Class CronTriggerBean

- java.lang.Object
- - org.quartz.Trigger
  - - org.quartz.CronTrigger
    - - org.springframework.scheduling.quartz.CronTriggerBean

- All Implemented Interfaces:
    Serializable, Cloneable, Comparable, Aware, BeanNameAware, InitializingBean, JobDetailAwareTrigger

      public class CronTriggerBean
      extends CronTrigger
      implements JobDetailAwareTrigger, BeanNameAware, InitializingBean

  Convenience subclass of Quartz's `CronTrigger` class, making bean-style usage easier.

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

  This class will also register the trigger with the job name and group of a given `JobDetail`. This allows `SchedulerFactoryBean` to automatically register a trigger for the corresponding JobDetail, instead of registering the JobDetail separately.

  NOTE: This convenience subclass does not work against Quartz 2.0. Use Quartz 2.0's native `JobDetailImpl` class or the new Quartz 2.0 builder API instead. Alternatively, switch to Spring's `CronTriggerFactoryBean` which largely is a drop-in replacement for this class and its properties and consistently works against Quartz 1.x as well as Quartz 2.x.

  Since:
    18.02.2004
  Author:
    Juergen Hoeller
  See Also:
    `Trigger.setName(java.lang.String)`, `Trigger.setGroup(java.lang.String)`, `CronTrigger.setStartTime(java.util.Date)`, `Trigger.setJobName(java.lang.String)`, `Trigger.setJobGroup(java.lang.String)`, `setJobDetail(org.quartz.JobDetail)`, `SchedulerAccessor.setTriggers(org.quartz.Trigger[])`, `SchedulerAccessor.setJobDetails(org.quartz.JobDetail[])`, `SimpleTriggerBean`, Serialized Form

- - ### Field Summary

    - ### Fields inherited from class org.quartz.CronTrigger

      `MISFIRE_INSTRUCTION_DO_NOTHING, MISFIRE_INSTRUCTION_FIRE_ONCE_NOW`

    - ### Fields inherited from class org.quartz.Trigger

      `DEFAULT_PRIORITY, INSTRUCTION_DELETE_TRIGGER, INSTRUCTION_NOOP, INSTRUCTION_RE_EXECUTE_JOB, INSTRUCTION_SET_ALL_JOB_TRIGGERS_COMPLETE, INSTRUCTION_SET_ALL_JOB_TRIGGERS_ERROR, INSTRUCTION_SET_TRIGGER_COMPLETE, INSTRUCTION_SET_TRIGGER_ERROR, MISFIRE_INSTRUCTION_SMART_POLICY, STATE_BLOCKED, STATE_COMPLETE, STATE_ERROR, STATE_NONE, STATE_NORMAL, STATE_PAUSED`

    - ### Fields inherited from interface org.springframework.scheduling.quartz.JobDetailAwareTrigger

      `JOB_DETAIL_KEY`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `CronTriggerBean()`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `afterPropertiesSet()` Invoked by a BeanFactory after it has set all bean properties supplied (and satisfied BeanFactoryAware and ApplicationContextAware).
    `JobDetail` | `getJobDetail()` Return the JobDetail that this Trigger is associated with.
    `void` | `setBeanName(String beanName)` Set the name of the bean in the bean factory that created this bean.
    `void` | `setJobDataAsMap(Map<String,?> jobDataAsMap)` Register objects in the JobDataMap via a given Map.
    `void` | `setJobDetail(JobDetail jobDetail)` Set the JobDetail that this trigger should be associated with.
    `void` | `setMisfireInstructionName(String constantName)` Set the misfire instruction via the name of the corresponding constant in the `CronTrigger` class.
    `void` | `setStartDelay(long startDelay)` Set the start delay in milliseconds.
    `void` | `setTriggerListenerNames(String[] names)` Set a list of TriggerListener names for this job, referring to non-global TriggerListeners registered with the Scheduler.

    - ### Methods inherited from class org.quartz.CronTrigger

      `clone, computeFirstFireTime, executionComplete, getCronExpression, getEndTime, getExpressionSummary, getFinalFireTime, getFireTimeAfter, getNextFireTime, getPreviousFireTime, getStartTime, getTimeAfter, getTimeBefore, getTimeZone, hasAdditionalProperties, main, mayFireAgain, setCronExpression, setCronExpression, setEndTime, setNextFireTime, setPreviousFireTime, setStartTime, setTimeZone, triggered, updateAfterMisfire, updateWithNewCalendar, validateMisfireInstruction, willFireOn, willFireOn`

    - ### Methods inherited from class org.quartz.Trigger

      `addTriggerListener, clearAllTriggerListeners, compareTo, equals, getCalendarName, getDescription, getFireInstanceId, getFullJobName, getFullName, getGroup, getJobDataMap, getJobGroup, getJobName, getKey, getMisfireInstruction, getName, getPriority, getTriggerListenerNames, hashCode, isVolatile, removeTriggerListener, setCalendarName, setDescription, setFireInstanceId, setGroup, setJobDataMap, setJobGroup, setJobName, setMisfireInstruction, setName, setPriority, setVolatility, toString, validate`

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

      `finalize, getClass, notify, notifyAll, wait, wait, wait`

- - ### Constructor Detail

    - #### CronTriggerBean

          public CronTriggerBean()

  - ### Method Detail

    - #### setJobDataAsMap

          public void setJobDataAsMap(Map<String,?> jobDataAsMap)

      Register objects in the JobDataMap via a given Map.

      These objects will be available to this Trigger only, in contrast to objects in the JobDetail's data map.

      Parameters:
        `jobDataAsMap` - Map with String keys and any objects as values (for example Spring-managed beans)
      See Also:
        `JobDetailBean.setJobDataAsMap(java.util.Map)`

    - #### setMisfireInstructionName

          public void setMisfireInstructionName(String constantName)

      Set the misfire instruction via the name of the corresponding constant in the `CronTrigger` class. Default is `MISFIRE_INSTRUCTION_SMART_POLICY`.
      See Also:
        `CronTrigger.MISFIRE_INSTRUCTION_FIRE_ONCE_NOW`, `CronTrigger.MISFIRE_INSTRUCTION_DO_NOTHING`, `Trigger.MISFIRE_INSTRUCTION_SMART_POLICY`

    - #### setTriggerListenerNames

          public void setTriggerListenerNames(String[] names)

      Set a list of TriggerListener names for this job, referring to non-global TriggerListeners registered with the Scheduler.

      A TriggerListener name always refers to the name returned by the TriggerListener implementation.

      See Also:
        `SchedulerAccessor.setTriggerListeners(org.quartz.TriggerListener[])`, `TriggerListener.getName()`

    - #### setStartDelay

          public void setStartDelay(long startDelay)

      Set the start delay in milliseconds.

      The start delay is added to the current system time (when the bean starts) to control the `start time` of the trigger.

      If the start delay is non-zero, it will always take precedence over start time.

      Parameters:
        `startDelay` - the start delay, in milliseconds

    - #### setJobDetail

          public void setJobDetail(JobDetail jobDetail)

      Set the JobDetail that this trigger should be associated with.

      This is typically used with a bean reference if the JobDetail is a Spring-managed bean. Alternatively, the trigger can also be associated with a job by name and group.

      See Also:
        `Trigger.setJobName(java.lang.String)`, `Trigger.setJobGroup(java.lang.String)`

    - #### getJobDetail

          public JobDetail getJobDetail()

      Description copied from interface: `JobDetailAwareTrigger`
      Return the JobDetail that this Trigger is associated with.
      Specified by:
        `getJobDetail` in interface `JobDetailAwareTrigger`
      Returns:
        the associated JobDetail, or `null` if none

    - #### setBeanName

          public void setBeanName(String beanName)

      Description copied from interface: `BeanNameAware`
      Set the name of the bean in the bean factory that created this bean.

      Invoked after population of normal bean properties but before an init callback such as `InitializingBean.afterPropertiesSet()` or a custom init-method.

      Specified by:
        `setBeanName` in interface `BeanNameAware`
      Parameters:
        `beanName` - the name of the bean in the factory. Note that this name is the actual bean name used in the factory, which may differ from the originally specified name: in particular for inner bean names, the actual bean name might have been made unique through appending "#..." suffixes. Use the `BeanFactoryUtils.originalBeanName(String)` method to extract the original bean name (without suffix), if desired.

    - #### afterPropertiesSet

          public void afterPropertiesSet()
                                  throws Exception

      Description copied from interface: `InitializingBean`
      Invoked by a BeanFactory after it has set all bean properties supplied (and satisfied BeanFactoryAware and ApplicationContextAware).

      This method allows the bean instance to perform initialization only possible when all bean properties have been set and to throw an exception in the event of misconfiguration.

      Specified by:
        `afterPropertiesSet` in interface `InitializingBean`
      Throws:
        `Exception` - in the event of misconfiguration (such as failure to set an essential property) or if initialization fails.