EDUCBA Logo

EDUCBA

MENUMENU
  • Explore
    • EDUCBA Pro
    • PRO Bundles
    • Featured Skills
    • New & Trending
    • Fresh Entries
    • Finance
    • Data Science
    • Programming and Dev
    • Excel
    • Marketing
    • HR
    • PDP
    • VFX and Design
    • Project Management
    • Exam Prep
    • All Courses
  • Blog
  • Enterprise
  • Free Courses
  • Log in
  • Sign Up
Home Software Development Software Development Tutorials Spring Tutorial Spring Batch Scheduler
 

Spring Batch Scheduler

Updated April 1, 2023

Spring Batch Scheduler

 

 

Definition of Spring Batch Scheduler

It is the framework available in spring batch which was used to run scheduled jobs at specific time. One of the open-source batch processing frameworks is Spring Batch. We may need to run spring batch jobs frequently or on a set schedule while working in any application. This is accomplished by passing spring task scheduler a cron expression. We can enable the scheduling by using @EnableScheduling annotation.

Watch our Demo Courses and Videos

Valuation, Hadoop, Excel, Mobile Apps, Web Development & many more.

Spring Batch Scheduler overview

  • Spring batch has been brought out to initiate batch jobs starting with version 3. x. In below example, we putting up a simple Job using a tasklet which was runs a select query on PostgreSQL database table.
  • While using this, the tasklet will run on a regular basis. Below is the term which was related as follows.

1) Jobs
2) TransactionManager
3) JobRepository
4) JobLauncher

  • Jobs are made up of steps, each of which may include a reader, a writer, and a processor.
  • TransactionManager is a class that is used to start and commit transactions as they are being processed.
  • Persistence is possible with Spring Batch’s JobRepository. For JobLauncher, Job, and Step instantiations, it provides CRUD operations.
  • JobLauncher provides a straightforward interface for starting a job using a collection of JobParameters.
  • Batch job scheduling can be configured using the annotation name as @EnableScheduling and a method annotated with @Scheduled followed by cron job time information, ensuring that the execution logic runs at the specified time.

Batch job scheduling requires two steps to configure:-

1) The annotation @EnableScheduling enables scheduling.

2) Create a @Scheduled function and use a cron job to supply the recurrence details. Within this method, put the job execution logic.

  • To schedule a job, we need to add spring batch core dependency in pom.xml file.

Creating spring batch scheduler

  • We have used the project template name as SpringBatchScheduler.
  • Below example shows how to create scheduler in spring batch are as follows.

Code:

public class Scheduler {
@Autowired
private JobLauncher lcr;
@Autowired
private Job j;
private JobExecution ex;
public void run() throws org.springframework.batch.core.repository.JobRestartException {
try {
org.springframework.batch.core.JobExecution ex1 = lcr.run(j, new JobParameters());
System.out.println("Status of execution: "+ ex.getBatchStatus());
} catch (JobExecutionAlreadyRunningException e) {
e.printStackTrace();
} catch (JobRestartException e) {
e.printStackTrace();
} catch (JobInstanceAlreadyCompleteException e) {
e.printStackTrace();
} catch (JobParametersInvalidException e) {
e.printStackTrace();
}
}
public JobLauncher getLcr() {
return lcr;
}
public void setLcr (JobLauncher lcr) {
this.lcr = lcr;
}
public Job getJ() {
return j;
}
public void setJ(Job j) {
this.j = j;
}
public JobExecution getEx() {
return ex;
}

Spring Batch Scheduler 2

Scheduled Spring Batch Job

  • We’ll put up a simple Job by using a tasklet that runs a select query on a PostgreSQL database table and prints the results.
  • Using the Spring Batch tasklet Scheduler, the Tasklet will be running on a regular basis.
  • The spring batch scheduler will execute as per the time which was we have scheduled in our application.
  • We can do the scheduling of spring batch by using spring task scheduler. Spring batch task scheduler is very important to implement scheduler in our application.

Project Set-up

1) Create project template of spring batch tasklet by using spring initializer

  • In below step we have providing project group name as com.example, artifact name as SpringBatchScheduler, project name as SpringBatchScheduler, and selected java version as 8. Also, we have defined spring boot version is 2.6.0, defined project as maven.
  • In below project we have selected spring web, spring batch, and PostgreSQL driver dependency to implement spring batch project.

Group – com. example Artifact name – SpringBatchScheduler
Name – SpringBatchScheduler Spring boot – 2.6.0
Project – Maven Java – 8
Package name – com.example.SpringBatchScheduler
Project Description – Project for SpringBatchScheduler
Dependencies – spring web, PostgreSQL driver, spring batch.

Spring Batch Scheduler 4

2) After generating project extract files and open this project by using spring tool suite –

After generating the project by using spring initializer in this step we are extracting the jar file and opening project by using spring tool suite.

Spring Batch Scheduler 5

3) After opening project using spring tool suite check the project and its files –

In this step, we are checking all the project template files. We also need to check maven dependencies and system libraries.

Spring Batch Scheduler 6

4) Add dependency packages –

In this step, we are adding the spring batch dependency in project.

Code:

<dependency> -- Start of dependency tag.
<groupId>org.springframework</groupId> -- Start and end of groupId tag.
<artifactId>spring-core</artifactId> -- Start and end of artifactId tag.
</dependency> -- End of dependency tag.
<dependency> -- Start of dependency tag.
<groupId>org.postgresql</groupId> -- Start and end of groupId tag.
<artifactId>postgresql</artifactId> -- Start and end of artifactId tag.
</dependency> -- End of dependency tag.

7

Spring batch scheduler example

We are using SpringBatchScheduler template to define the example.

1) Set up pojo –

Code:

public class pScheduler {
String stud_name;
public String getstudName() {
return stud_name;
}
public void setFirstName (String name) {
this.stud_name = name;
}
@Override
public String toString(){
return "Stud, "+stud_name+"";
}
}

8

2) Create the tasklet –

Code:

public class SBTasklet implements Tasklet{
private DataSource ds;
private String sql_query="select stud_name from stud";
public RepeatStatus execute (StepContribution contribution,
ChunkContext chunkContext) throws Exception {
ArrayList stud_list = new ArrayList();
JdbcTemplate myTemplate = new JdbcTemplate(getDataSource());
stud_list = SBTasklet.sql_query (sql_query, new studMapper ());
return RepeatStatus.FINISHED;
}
private static ArrayList sql_query(String sql_query2, studMapper studMapper) {
return null;
}
public DataSource getDataSource() {
return ds;
}
public void setDataSource (DataSource DBS) {
this.ds = DBS;
}
}

9

3) Create scheduler, configure the job, and run the scheduler –

We have already created scheduler so we have no need to create and configure it again now we have running the scheduler.

Code:

public class MainSchedule {
public static void main(String[] args) {
String[] str = {"classpath:META-INF/spring/job-config.xml","classpath:META-INF/spring/context-config.xml"};
ClassPathXmlApplicationContext cx = new ClassPathXmlApplicationContext (str);
}
}

11

4) Run the scheduler

12

Conclusion

In spring batch scheduling we can enable scheduling by using @EnableScheduling annotation. While using the Spring Batch Scheduler, the tasklet will run on a regular basis. Spring batch scheduler is the framework available in spring batch which was used to run scheduled jobs at specific time.

Recommended Articles

This is a guide to Spring Batch Scheduler. Here we discuss What is azure log analytics, How to create Azure Log Analytics, and tools. You may also have a look at the following articles to learn more –

  1. Spring Boot Advantages
  2. Spring Boot Initializr
  3. Spring Boot Maven
  4. Spring Boot Cache

Primary Sidebar

Footer

Follow us!
  • EDUCBA FacebookEDUCBA TwitterEDUCBA LinkedINEDUCBA Instagram
  • EDUCBA YoutubeEDUCBA CourseraEDUCBA Udemy
APPS
EDUCBA Android AppEDUCBA iOS App
Blog
  • Blog
  • Free Tutorials
  • About us
  • Contact us
  • Log in
Courses
  • Enterprise Solutions
  • Free Courses
  • Explore Programs
  • All Courses
  • All in One Bundles
  • Sign up
Email
  • [email protected]

ISO 10004:2018 & ISO 9001:2015 Certified

© 2025 - EDUCBA. ALL RIGHTS RESERVED. THE CERTIFICATION NAMES ARE THE TRADEMARKS OF THEIR RESPECTIVE OWNERS.

EDUCBA

*Please provide your correct email id. Login details for this Free course will be emailed to you
Loading . . .
Quiz
Question:

Answer:

Quiz Result
Total QuestionsCorrect AnswersWrong AnswersPercentage

Explore 1000+ varieties of Mock tests View more

EDUCBA

*Please provide your correct email id. Login details for this Free course will be emailed to you
EDUCBA
Free Software Development Course

Web development, programming languages, Software testing & others

By continuing above step, you agree to our Terms of Use and Privacy Policy.
*Please provide your correct email id. Login details for this Free course will be emailed to you
EDUCBA

*Please provide your correct email id. Login details for this Free course will be emailed to you

EDUCBA Login

Forgot Password?

🚀 Limited Time Offer! - 🎁 ENROLL NOW