Allow Quartz property to set the scheduler name
This commit makes sure that "org.quartz.scheduler.instanceName" is honoured if set. Previously, "spring.quartz.scheduler-name" had a default value and was always set. As a result, `SchedulerFactoryBean` did not take the quartz property into account. Closes gh-14243
This commit is contained in:
parent
d10ba39673
commit
8652f40781
|
@ -90,7 +90,9 @@ public class QuartzAutoConfiguration {
|
||||||
SchedulerFactoryBean schedulerFactoryBean = new SchedulerFactoryBean();
|
SchedulerFactoryBean schedulerFactoryBean = new SchedulerFactoryBean();
|
||||||
schedulerFactoryBean.setJobFactory(new AutowireCapableBeanJobFactory(
|
schedulerFactoryBean.setJobFactory(new AutowireCapableBeanJobFactory(
|
||||||
this.applicationContext.getAutowireCapableBeanFactory()));
|
this.applicationContext.getAutowireCapableBeanFactory()));
|
||||||
schedulerFactoryBean.setBeanName(this.properties.getSchedulerName());
|
if (this.properties.getSchedulerName() != null) {
|
||||||
|
schedulerFactoryBean.setSchedulerName(this.properties.getSchedulerName());
|
||||||
|
}
|
||||||
schedulerFactoryBean.setAutoStartup(this.properties.isAutoStartup());
|
schedulerFactoryBean.setAutoStartup(this.properties.isAutoStartup());
|
||||||
schedulerFactoryBean
|
schedulerFactoryBean
|
||||||
.setStartupDelay((int) this.properties.getStartupDelay().getSeconds());
|
.setStartupDelay((int) this.properties.getStartupDelay().getSeconds());
|
||||||
|
|
|
@ -41,7 +41,7 @@ public class QuartzProperties {
|
||||||
/**
|
/**
|
||||||
* Name of the scheduler.
|
* Name of the scheduler.
|
||||||
*/
|
*/
|
||||||
private String schedulerName = "quartzScheduler";
|
private String schedulerName;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Whether to automatically start the scheduler after initialization.
|
* Whether to automatically start the scheduler after initialization.
|
||||||
|
|
|
@ -504,6 +504,11 @@
|
||||||
"level" : "error"
|
"level" : "error"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "spring.quartz.scheduler-name",
|
||||||
|
"type": "java.lang.String",
|
||||||
|
"defaultValue": "quartzScheduler"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "spring.quartz.jdbc.initialize-schema",
|
"name": "spring.quartz.jdbc.initialize-schema",
|
||||||
"defaultValue": "embedded"
|
"defaultValue": "embedded"
|
||||||
|
|
|
@ -250,17 +250,14 @@ public class QuartzAutoConfigurationTests {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void withCustomConfiguration() {
|
public void withCustomConfiguration() {
|
||||||
this.contextRunner.withPropertyValues(
|
this.contextRunner.withPropertyValues("spring.quartz.auto-startup=false",
|
||||||
"spring.quartz.scheduler-name=testScheduler",
|
"spring.quartz.startup-delay=1m",
|
||||||
"spring.quartz.auto-startup=false", "spring.quartz.startup-delay=1m",
|
|
||||||
"spring.quartz.wait-for-jobs-to-complete-on-shutdown=true",
|
"spring.quartz.wait-for-jobs-to-complete-on-shutdown=true",
|
||||||
"spring.quartz.overwrite-existing-jobs=true").run((context) -> {
|
"spring.quartz.overwrite-existing-jobs=true").run((context) -> {
|
||||||
assertThat(context).hasSingleBean(SchedulerFactoryBean.class);
|
assertThat(context).hasSingleBean(SchedulerFactoryBean.class);
|
||||||
SchedulerFactoryBean schedulerFactory = context
|
SchedulerFactoryBean schedulerFactory = context
|
||||||
.getBean(SchedulerFactoryBean.class);
|
.getBean(SchedulerFactoryBean.class);
|
||||||
DirectFieldAccessor dfa = new DirectFieldAccessor(schedulerFactory);
|
DirectFieldAccessor dfa = new DirectFieldAccessor(schedulerFactory);
|
||||||
assertThat(dfa.getPropertyValue("schedulerName"))
|
|
||||||
.isEqualTo("testScheduler");
|
|
||||||
assertThat(schedulerFactory.isAutoStartup()).isFalse();
|
assertThat(schedulerFactory.isAutoStartup()).isFalse();
|
||||||
assertThat(dfa.getPropertyValue("startupDelay")).isEqualTo(60);
|
assertThat(dfa.getPropertyValue("startupDelay")).isEqualTo(60);
|
||||||
assertThat(dfa.getPropertyValue("waitForJobsToCompleteOnShutdown"))
|
assertThat(dfa.getPropertyValue("waitForJobsToCompleteOnShutdown"))
|
||||||
|
@ -270,6 +267,45 @@ public class QuartzAutoConfigurationTests {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void schedulerNameWithDedicatedProperty() {
|
||||||
|
this.contextRunner
|
||||||
|
.withPropertyValues("spring.quartz.scheduler-name=testScheduler")
|
||||||
|
.run(assertSchedulerName("testScheduler"));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void schedulerNameWithQuartzProperty() {
|
||||||
|
this.contextRunner.withPropertyValues(
|
||||||
|
"spring.quartz.properties.org.quartz.scheduler.instanceName=testScheduler")
|
||||||
|
.run(assertSchedulerName("testScheduler"));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void schedulerNameWithDedicatedPropertyTakesPrecedence() {
|
||||||
|
this.contextRunner.withPropertyValues(
|
||||||
|
"spring.quartz.scheduler-name=specificTestScheduler",
|
||||||
|
"spring.quartz.properties.org.quartz.scheduler.instanceName=testScheduler")
|
||||||
|
.run(assertSchedulerName("specificTestScheduler"));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void schedulerNameUseBeanNameByDefault() {
|
||||||
|
this.contextRunner.withPropertyValues()
|
||||||
|
.run(assertSchedulerName("quartzScheduler"));
|
||||||
|
}
|
||||||
|
|
||||||
|
private ContextConsumer<AssertableApplicationContext> assertSchedulerName(
|
||||||
|
String schedulerName) {
|
||||||
|
return (context) -> {
|
||||||
|
assertThat(context).hasSingleBean(SchedulerFactoryBean.class);
|
||||||
|
SchedulerFactoryBean schedulerFactory = context
|
||||||
|
.getBean(SchedulerFactoryBean.class);
|
||||||
|
DirectFieldAccessor dfa = new DirectFieldAccessor(schedulerFactory);
|
||||||
|
assertThat(dfa.getPropertyValue("schedulerName")).isEqualTo(schedulerName);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
@Import(ComponentThatUsesScheduler.class)
|
@Import(ComponentThatUsesScheduler.class)
|
||||||
@Configuration
|
@Configuration
|
||||||
protected static class BaseQuartzConfiguration {
|
protected static class BaseQuartzConfiguration {
|
||||||
|
|
Loading…
Reference in New Issue