Ensure that Quartz can be auto-configured with a Quartz-specific TM
Previously, Quartz could be configured with a specific DataSource using `@QuartzDataSource` but it was not possible to configure a Quartz-specific transaction manager. This could result in the different DataSources being used by Quartz itself and Quart'z DataSourceTransactionManager. This commit introduces a new qualifier, `@QuartzTransactionManager`, that can be used to avoid the above-described problem. Any `@QuartzTransactionManager`-annotated bean will be used by the Quartz auto-configure configuration instead of the application's main `TransactionManager`. If no such qualified bean is present, the application's main TransactionManager, if any, will be used as before. Fixes gh-20184
This commit is contained in:
@@ -5819,6 +5819,7 @@ It is also possible to provide a custom script by setting the configprop:spring.
|
||||
|
||||
To have Quartz use a `DataSource` other than the application's main `DataSource`, declare a `DataSource` bean, annotating its `@Bean` method with `@QuartzDataSource`.
|
||||
Doing so ensures that the Quartz-specific `DataSource` is used by both the `SchedulerFactoryBean` and for schema initialization.
|
||||
Similarly, to have Quartz use a `TransactionManager` other than the application's main `TransactionManager` declare a `TransactionManager` bean, annotating its `@Bean` method with `@QuartzTransactionManager`.
|
||||
|
||||
By default, jobs created by configuration will not overwrite already registered jobs that have been read from a persistent job store.
|
||||
To enable overwriting existing job definitions set the configprop:spring.quartz.overwrite-existing-jobs[] property.
|
||||
|
||||
Reference in New Issue
Block a user