CtrlK
BlogDocsLog inGet started
Tessl Logo

tessl/maven-org-springframework-boot--spring-boot-starter-quartz

Starter for using the Quartz scheduler in Spring Boot applications with auto-configuration support

Pending
Quality

Pending

Does it follow best practices?

Impact

Pending

No eval scenarios have been run

SecuritybySnyk

Pending

The risk profile of this skill

Overview
Eval results
Files

index.mddocs/

Spring Boot Starter Quartz

Spring Boot Starter Quartz provides auto-configuration for the Quartz Scheduler framework, enabling seamless job scheduling capabilities in Spring Boot applications. It automatically configures Scheduler instances, supports both in-memory and JDBC-based job stores, and provides monitoring through Spring Boot Actuator endpoints.

Package Information

  • Package Name: org.springframework.boot:spring-boot-starter-quartz
  • Package Type: maven
  • Language: Java
  • Installation: Add to your pom.xml:
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-quartz</artifactId>
    <version>3.5.3</version>
</dependency>

For Gradle:

implementation 'org.springframework.boot:spring-boot-starter-quartz:3.5.3'

Core Imports

import org.springframework.boot.autoconfigure.quartz.*;
import org.springframework.scheduling.quartz.SchedulerFactoryBean;
import org.quartz.*;

For actuator endpoints:

import org.springframework.boot.actuate.quartz.*;
import org.springframework.boot.actuate.autoconfigure.quartz.*;

For customization:

import org.springframework.boot.autoconfigure.quartz.SchedulerFactoryBeanCustomizer;
import org.springframework.boot.autoconfigure.quartz.QuartzDataSource;
import org.springframework.boot.autoconfigure.quartz.QuartzTransactionManager;

Basic Usage

The starter provides automatic configuration when added as a dependency. Basic job scheduling setup:

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
import org.springframework.scheduling.quartz.JobDetailFactoryBean;
import org.springframework.scheduling.quartz.SimpleTriggerFactoryBean;
import org.springframework.stereotype.Component;
import org.quartz.*;

@SpringBootApplication
public class QuartzApplication {
    
    public static void main(String[] args) {
        SpringApplication.run(QuartzApplication.class, args);
    }
    
    @Bean
    public JobDetail sampleJobDetail() {
        return JobBuilder.newJob(SampleJob.class)
                .withIdentity("sampleJob")
                .usingJobData("name", "Spring Boot Quartz")
                .storeDurably()
                .build();
    }
    
    @Bean
    public Trigger sampleJobTrigger() {
        return TriggerBuilder.newTrigger()
                .forJob(sampleJobDetail())
                .withIdentity("sampleTrigger")
                .withSchedule(SimpleScheduleBuilder.simpleSchedule()
                    .withIntervalInSeconds(10)
                    .repeatForever())
                .build();
    }
}

@Component  
public class SampleJob implements Job {
    @Override
    public void execute(JobExecutionContext context) throws JobExecutionException {
        System.out.println("Sample job executed: " + 
            context.getJobDetail().getJobDataMap().getString("name"));
    }
}

Configuration via application.properties:

# Job store configuration
spring.quartz.job-store-type=memory
spring.quartz.scheduler-name=MyScheduler
spring.quartz.auto-startup=true
spring.quartz.startup-delay=5s
spring.quartz.wait-for-jobs-to-complete-on-shutdown=true

# JDBC configuration (when using JDBC job store)
spring.quartz.job-store-type=jdbc
spring.quartz.jdbc.initialize-schema=embedded
spring.quartz.properties.org.quartz.jobStore.driverDelegateClass=org.quartz.impl.jdbcjobstore.StdJDBCDelegate

Architecture

Spring Boot Starter Quartz integrates Quartz Scheduler with Spring Boot's auto-configuration mechanism:

  • Auto-configuration: QuartzAutoConfiguration automatically configures SchedulerFactoryBean when Quartz is on the classpath
  • Properties Binding: QuartzProperties provides type-safe configuration binding for spring.quartz.* properties
  • Job Store Support: Automatic configuration for both in-memory (MEMORY) and database-backed (JDBC) job stores
  • Spring Integration: Seamless integration with Spring's dependency injection, transaction management, and lifecycle management
  • Actuator Support: Management endpoints for monitoring jobs, triggers, and scheduler status
  • Customization: SchedulerFactoryBeanCustomizer interface for advanced scheduler configuration

Capabilities

Auto-configuration

Core auto-configuration classes that automatically set up Quartz Scheduler when the starter is present. Handles scheduler factory bean creation, job store configuration, and Spring integration.

@AutoConfiguration
public class QuartzAutoConfiguration {
    @Bean
    @ConditionalOnMissingBean
    public SchedulerFactoryBean quartzScheduler(
        QuartzProperties properties,
        ObjectProvider<SchedulerFactoryBeanCustomizer> customizers,
        ObjectProvider<JobDetail> jobDetails,
        Map<String, Calendar> calendars,
        ObjectProvider<Trigger> triggers,
        ApplicationContext applicationContext
    );
}

Auto-configuration

Configuration Properties

Type-safe configuration properties for customizing Quartz behavior through application.properties or application.yml. Covers scheduler settings, job store configuration, and JDBC initialization.

@ConfigurationProperties("spring.quartz")
public class QuartzProperties {
    public JobStoreType getJobStoreType();
    public void setJobStoreType(JobStoreType jobStoreType);
    public String getSchedulerName();
    public boolean isAutoStartup();
    public Duration getStartupDelay();
    public boolean isWaitForJobsToCompleteOnShutdown();
    public boolean isOverwriteExistingJobs();
    public Map<String, String> getProperties();
    public Jdbc getJdbc();
}

public enum JobStoreType {
    MEMORY, JDBC
}

Configuration Properties

Scheduler Customization

Interfaces and annotations for customizing scheduler behavior, data sources, and transaction managers. Enables fine-grained control over Quartz configuration in Spring Boot applications.

@FunctionalInterface
public interface SchedulerFactoryBeanCustomizer {
    void customize(SchedulerFactoryBean schedulerFactoryBean);
}

@Qualifier
public @interface QuartzDataSource {
}

@Qualifier  
public @interface QuartzTransactionManager {
}

Scheduler Customization

Actuator Integration

Management endpoints for monitoring and inspecting Quartz scheduler state, including jobs, triggers, and execution history. Provides both REST API and web interface for scheduler management.

@Endpoint(id = "quartz")
public class QuartzEndpoint {
    @ReadOperation
    public QuartzDescriptor quartzReport() throws SchedulerException;
    
    public QuartzGroupsDescriptor quartzJobGroups() throws SchedulerException;
    public QuartzGroupsDescriptor quartzTriggerGroups() throws SchedulerException;
}

@AutoConfiguration
public class QuartzEndpointAutoConfiguration {
    @Bean
    public QuartzEndpoint quartzEndpoint(
        Scheduler scheduler, 
        ObjectProvider<SanitizingFunction> sanitizingFunctions
    );
}

Actuator Integration

Types

public class QuartzProperties.Jdbc {
    public String getSchema();
    public void setSchema(String schema);
    public String getPlatform();
    public void setPlatform(String platform);
    public DatabaseInitializationMode getInitializeSchema();
    public void setInitializeSchema(DatabaseInitializationMode initializeSchema);
    public List<String> getCommentPrefix();
    public void setCommentPrefix(List<String> commentPrefix);
}

public class QuartzDataSourceScriptDatabaseInitializer {
    public QuartzDataSourceScriptDatabaseInitializer(
        DataSource dataSource, 
        QuartzProperties properties
    );
}

public class SchedulerDependsOnDatabaseInitializationDetector {
    // Detects scheduler dependencies on database initialization
}

docs

actuator-integration.md

auto-configuration.md

configuration-properties.md

index.md

scheduler-customization.md

tile.json