Skip to content

Commit 854ddca

Browse files
committed
changes after code review - removed module within module, java version to 1.8, boot version to 1.2.6, removed empty tests, removed named beans
1 parent 6ba4952 commit 854ddca

File tree

15 files changed

+126
-172
lines changed

15 files changed

+126
-172
lines changed

spring-quartz/README.md

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,22 @@
1-
=========
1+
=========================================================================
22

33
## Scheduling in Spring with Quartz Example Project
4+
This is the first example where we configure a basic scheduler.
5+
##### Spring boot application, Main class
6+
###
7+
```
8+
org.baeldung.springquartz.SpringQuartzApp
9+
```
10+
######
411

12+
##### Configuration in *application.properties*
13+
####
14+
15+
- Default: configures scheduler using Spring convenience classes:
16+
```
17+
using.spring.schedulerFactory=true
18+
```
19+
- To configure scheduler using Quartz API:
20+
```
21+
using.spring.schedulerFactory=false
22+
```

spring-quartz/pom.xml

Lines changed: 54 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,38 +1,82 @@
11
<?xml version="1.0" encoding="UTF-8"?>
22
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3-
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
3+
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
44
<modelVersion>4.0.0</modelVersion>
55

66
<groupId>org.baeldung</groupId>
77
<artifactId>spring-quartz</artifactId>
8-
<version>0.0.1-SNAPSHOT</version>
9-
<modules>
10-
<module>spring-quartz-basics</module>
11-
</modules>
12-
<packaging>pom</packaging>
13-
148
<name>spring-quartz</name>
9+
<version>0.0.1-SNAPSHOT</version>
10+
<packaging>jar</packaging>
1511
<description>Demo project for Scheduling in Spring with Quartz</description>
1612

1713
<parent>
1814
<groupId>org.springframework.boot</groupId>
1915
<artifactId>spring-boot-starter-parent</artifactId>
20-
<version>1.1.12.RELEASE</version>
16+
<version>1.2.6.RELEASE</version>
2117
<relativePath/> <!-- lookup parent from repository -->
2218
</parent>
2319

2420
<properties>
2521
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
26-
<java.version>1.7</java.version>
22+
<java.version>1.8</java.version>
2723
</properties>
2824

25+
<dependencies>
26+
27+
<dependency>
28+
<groupId>org.springframework.boot</groupId>
29+
<artifactId>spring-boot-starter-jdbc</artifactId>
30+
</dependency>
31+
32+
<!-- spring's support for quartz -->
33+
<dependency>
34+
<groupId>org.springframework</groupId>
35+
<artifactId>spring-context-support</artifactId>
36+
</dependency>
37+
38+
<!-- quartz -->
39+
<dependency>
40+
<groupId>org.quartz-scheduler</groupId>
41+
<artifactId>quartz</artifactId>
42+
<version>2.2.1</version>
43+
</dependency>
44+
45+
<!-- tests -->
46+
<dependency>
47+
<groupId>org.springframework.boot</groupId>
48+
<artifactId>spring-boot-starter-test</artifactId>
49+
<scope>test</scope>
50+
</dependency>
51+
52+
</dependencies>
53+
2954
<build>
55+
56+
<resources>
57+
<resource>
58+
<directory>src/main/resources</directory>
59+
<filtering>true</filtering>
60+
</resource>
61+
</resources>
62+
3063
<plugins>
64+
<plugin>
65+
<groupId>org.apache.maven.plugins</groupId>
66+
<artifactId>maven-compiler-plugin</artifactId>
67+
<version>3.1</version>
68+
<configuration>
69+
<source>1.8</source>
70+
<target>1.8</target>
71+
</configuration>
72+
</plugin>
73+
74+
<!-- Spring boot maven plugin -->
3175
<plugin>
3276
<groupId>org.springframework.boot</groupId>
3377
<artifactId>spring-boot-maven-plugin</artifactId>
3478
</plugin>
3579
</plugins>
3680
</build>
3781

38-
</project>
82+
</project>

spring-quartz/spring-quartz-basics/.gitignore

Lines changed: 0 additions & 2 deletions
This file was deleted.

spring-quartz/spring-quartz-basics/README.md

Lines changed: 0 additions & 22 deletions
This file was deleted.

spring-quartz/spring-quartz-basics/pom.xml

Lines changed: 0 additions & 66 deletions
This file was deleted.

spring-quartz/spring-quartz-basics/src/test/java/org/baeldung/springquartz/SpringQuartzApplicationTests.java

Lines changed: 0 additions & 13 deletions
This file was deleted.

spring-quartz/spring-quartz-basics/src/main/java/org/baeldung/springquartz/SpringQuartzBasicsApp.java renamed to spring-quartz/src/main/java/org/baeldung/springquartz/SpringQuartzApp.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,16 @@
11
package org.baeldung.springquartz;
22

33
import org.springframework.boot.SpringApplication;
4+
import org.springframework.boot.builder.SpringApplicationBuilder;
45
import org.springframework.context.annotation.ComponentScan;
5-
import org.springframework.context.annotation.Configuration;
66
import org.springframework.scheduling.annotation.EnableScheduling;
77

8-
@Configuration
98
@ComponentScan
109
@EnableScheduling
11-
public class SpringQuartzBasicsApp {
10+
public class SpringQuartzApp {
1211

1312
public static void main(String[] args) {
14-
SpringApplication.run(SpringQuartzBasicsApp.class, args);
13+
new SpringApplicationBuilder(SpringQuartzApp.class)
14+
.showBanner(false).run(args);
1515
}
1616
}

spring-quartz/spring-quartz-basics/src/main/java/org/baeldung/springquartz/scheduler/QrtzScheduler.java renamed to spring-quartz/src/main/java/org/baeldung/springquartz/basics/scheduler/QrtzScheduler.java

Lines changed: 22 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,83 +1,81 @@
1-
package org.baeldung.springquartz.scheduler;
1+
package org.baeldung.springquartz.basics.scheduler;
22

33
import static org.quartz.JobBuilder.newJob;
44
import static org.quartz.SimpleScheduleBuilder.simpleSchedule;
55
import static org.quartz.TriggerBuilder.newTrigger;
66

7+
import java.io.IOException;
8+
9+
import javax.annotation.PostConstruct;
10+
711
import org.baeldung.springquartz.config.AutoWiringSpringBeanJobFactory;
8-
import org.quartz.JobDetail;
9-
import org.quartz.Scheduler;
10-
import org.quartz.SchedulerException;
11-
import org.quartz.Trigger;
12+
import org.quartz.*;
1213
import org.quartz.impl.StdSchedulerFactory;
1314
import org.slf4j.Logger;
1415
import org.slf4j.LoggerFactory;
1516
import org.springframework.beans.factory.annotation.Autowired;
16-
import org.springframework.beans.factory.annotation.Qualifier;
1717
import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression;
1818
import org.springframework.context.ApplicationContext;
1919
import org.springframework.context.annotation.Bean;
2020
import org.springframework.context.annotation.Configuration;
2121
import org.springframework.core.io.ClassPathResource;
2222
import org.springframework.scheduling.quartz.SpringBeanJobFactory;
2323

24-
import javax.annotation.PostConstruct;
25-
import java.io.IOException;
26-
2724
@Configuration
2825
@ConditionalOnExpression("'${using.spring.schedulerFactory}'=='false'")
2926
public class QrtzScheduler {
3027

31-
Logger _logger = LoggerFactory.getLogger(getClass());
28+
Logger logger = LoggerFactory.getLogger(getClass());
3229

3330
@Autowired
3431
private ApplicationContext applicationContext;
3532

3633
@PostConstruct
3734
public void init() {
38-
_logger.info("Hello world from Quartz...");
35+
logger.info("Hello world from Quartz...");
3936
}
4037

41-
@Bean(name = "SpringJobFactory")
38+
@Bean
4239
public SpringBeanJobFactory springBeanJobFactory() {
4340
AutoWiringSpringBeanJobFactory jobFactory = new AutoWiringSpringBeanJobFactory();
44-
_logger.debug("Configuring Job factory");
41+
logger.debug("Configuring Job factory");
4542

4643
jobFactory.setApplicationContext(applicationContext);
4744
return jobFactory;
4845
}
4946

50-
@Bean(name = "Qrtz_Scheduler")
51-
public Scheduler scheduler(@Qualifier("Qrtz_Trigger") Trigger trigger,
52-
@Qualifier("Qrtz_Job_Detail") JobDetail job) throws SchedulerException, IOException {
47+
@Bean
48+
public Scheduler scheduler(Trigger trigger, JobDetail job)
49+
throws SchedulerException, IOException {
5350

5451
StdSchedulerFactory factory = new StdSchedulerFactory();
5552
factory.initialize(new ClassPathResource("quartz.properties").getInputStream());
5653

57-
_logger.debug("Getting a handle to the Scheduler");
54+
logger.debug("Getting a handle to the Scheduler");
5855
Scheduler scheduler = factory.getScheduler();
5956
scheduler.setJobFactory(springBeanJobFactory());
6057
scheduler.scheduleJob(job, trigger);
6158

62-
_logger.debug("Starting Scheduler threads");
59+
logger.debug("Starting Scheduler threads");
6360
scheduler.start();
6461
return scheduler;
6562
}
6663

67-
@Bean(name = "Qrtz_Job_Detail")
64+
@Bean
6865
public JobDetail jobDetail() {
6966

70-
return newJob().ofType(SampleJob.class).storeDurably().withIdentity("Qrtz_Job_Detail")
67+
return newJob().ofType(SampleJob.class).storeDurably()
68+
.withIdentity(JobKey.jobKey("Qrtz_Job_Detail"))
7169
.withDescription("Invoke Sample Job service...").build();
7270
}
7371

74-
@Bean(name = "Qrtz_Trigger")
75-
public Trigger trigger(@Qualifier("Qrtz_Job_Detail") JobDetail job) {
72+
@Bean
73+
public Trigger trigger(JobDetail job) {
7674

7775
int frequencyInSec = 10;
78-
_logger.info("Configuring trigger to fire every {} seconds", frequencyInSec);
76+
logger.info("Configuring trigger to fire every {} seconds", frequencyInSec);
7977

80-
return newTrigger().forJob(job).withIdentity("Qrtz_Trigger")
78+
return newTrigger().forJob(job).withIdentity(TriggerKey.triggerKey("Qrtz_Trigger"))
8179
.withDescription("Sample trigger")
8280
.withSchedule(
8381
simpleSchedule().withIntervalInSeconds(frequencyInSec).repeatForever())

spring-quartz/spring-quartz-basics/src/main/java/org/baeldung/springquartz/scheduler/SampleJob.java renamed to spring-quartz/src/main/java/org/baeldung/springquartz/basics/scheduler/SampleJob.java

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,29 @@
1-
package org.baeldung.springquartz.scheduler;
1+
package org.baeldung.springquartz.basics.scheduler;
22

3-
import org.baeldung.springquartz.service.SampleJobService;
3+
import org.baeldung.springquartz.basics.service.SampleJobService;
44
import org.quartz.Job;
55
import org.quartz.JobExecutionContext;
66
import org.quartz.JobExecutionException;
77
import org.slf4j.Logger;
88
import org.slf4j.LoggerFactory;
99
import org.springframework.beans.factory.annotation.Autowired;
10-
import org.springframework.context.annotation.Scope;
1110
import org.springframework.stereotype.Component;
1211

1312
@Component
1413
public class SampleJob implements Job {
1514

16-
Logger _logger = LoggerFactory.getLogger(getClass());
15+
Logger logger = LoggerFactory.getLogger(getClass());
1716

1817
@Autowired
1918
private SampleJobService jobService;
2019

2120
public void execute(JobExecutionContext context) throws JobExecutionException {
2221

23-
_logger.info("Job **{}** fired @ {}", context.getJobDetail().getKey().getName(),
22+
logger.info("Job ** {} ** fired @ {}", context.getJobDetail().getKey().getName(),
2423
context.getFireTime());
2524

2625
jobService.executeSampleJob();
2726

28-
_logger.info("Next job scheduled @ {}", context.getNextFireTime());
27+
logger.info("Next job scheduled @ {}", context.getNextFireTime());
2928
}
3029
}

0 commit comments

Comments
 (0)