Commit e84477cf authored by Andy Wilkinson's avatar Andy Wilkinson

Only perform Quartz DataSource init when using JDBC store

Fixes gh-17545
parent 309329ac
...@@ -32,6 +32,7 @@ import org.springframework.boot.autoconfigure.AutoConfigureAfter; ...@@ -32,6 +32,7 @@ import org.springframework.boot.autoconfigure.AutoConfigureAfter;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.boot.autoconfigure.condition.ConditionalOnSingleCandidate; import org.springframework.boot.autoconfigure.condition.ConditionalOnSingleCandidate;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
import org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration; import org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration;
...@@ -124,6 +125,7 @@ public class QuartzAutoConfiguration { ...@@ -124,6 +125,7 @@ public class QuartzAutoConfiguration {
@Configuration @Configuration
@ConditionalOnSingleCandidate(DataSource.class) @ConditionalOnSingleCandidate(DataSource.class)
@ConditionalOnProperty(prefix = "spring.quartz", name = "job-store-type", havingValue = "jdbc")
protected static class JdbcStoreTypeConfiguration { protected static class JdbcStoreTypeConfiguration {
@Bean @Bean
...@@ -132,13 +134,11 @@ public class QuartzAutoConfiguration { ...@@ -132,13 +134,11 @@ public class QuartzAutoConfiguration {
@QuartzDataSource ObjectProvider<DataSource> quartzDataSource, @QuartzDataSource ObjectProvider<DataSource> quartzDataSource,
ObjectProvider<PlatformTransactionManager> transactionManager) { ObjectProvider<PlatformTransactionManager> transactionManager) {
return (schedulerFactoryBean) -> { return (schedulerFactoryBean) -> {
if (properties.getJobStoreType() == JobStoreType.JDBC) { DataSource dataSourceToUse = getDataSource(dataSource, quartzDataSource);
DataSource dataSourceToUse = getDataSource(dataSource, quartzDataSource); schedulerFactoryBean.setDataSource(dataSourceToUse);
schedulerFactoryBean.setDataSource(dataSourceToUse); PlatformTransactionManager txManager = transactionManager.getIfUnique();
PlatformTransactionManager txManager = transactionManager.getIfUnique(); if (txManager != null) {
if (txManager != null) { schedulerFactoryBean.setTransactionManager(txManager);
schedulerFactoryBean.setTransactionManager(txManager);
}
} }
}; };
} }
......
...@@ -104,6 +104,19 @@ public class QuartzAutoConfigurationTests { ...@@ -104,6 +104,19 @@ public class QuartzAutoConfigurationTests {
.withPropertyValues("spring.quartz.job-store-type=jdbc").run(assertDataSourceJobStore("dataSource")); .withPropertyValues("spring.quartz.job-store-type=jdbc").run(assertDataSourceJobStore("dataSource"));
} }
@Test
public void withDataSourceAndInMemoryStoreDoesNotInitializeDataSource() {
this.contextRunner.withUserConfiguration(QuartzJobsConfiguration.class)
.withConfiguration(AutoConfigurations.of(DataSourceAutoConfiguration.class,
DataSourceTransactionManagerAutoConfiguration.class))
.withPropertyValues("spring.quartz.job-store-type=memory").run((context) -> {
JdbcTemplate jdbcTemplate = new JdbcTemplate(context.getBean("dataSource", DataSource.class));
assertThat(jdbcTemplate.queryForList("SHOW TABLES").stream()
.map((table) -> (String) table.get("TABLE_NAME")))
.noneMatch((name) -> name.startsWith("QRTZ"));
});
}
@Test @Test
public void withDataSourceNoTransactionManager() { public void withDataSourceNoTransactionManager() {
this.contextRunner.withUserConfiguration(QuartzJobsConfiguration.class) this.contextRunner.withUserConfiguration(QuartzJobsConfiguration.class)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment