下面列出了org.springframework.boot.autoconfigure.quartz.JobStoreType#org.springframework.boot.autoconfigure.quartz.SchedulerFactoryBeanCustomizer 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
public ApiBootQuartzAutoConfiguration(ApiBootQuartzProperties properties, ObjectProvider<SchedulerFactoryBeanCustomizer> customizers, JobDetail[] jobDetails, Map<String, Calendar> calendars, Trigger[] triggers, ApplicationContext applicationContext) {
this.properties = properties;
this.customizers = customizers;
this.jobDetails = jobDetails;
this.calendars = calendars;
this.triggers = triggers;
this.applicationContext = applicationContext;
}
/**
* properties needed to initialize Jdbc mode
*
* @param properties ApiBoot Quartz Properties
* @return SchedulerFactoryBeanCustomizer
*/
@Bean
@Order(0)
public SchedulerFactoryBeanCustomizer jobPropertiesCustomizer(ApiBootQuartzProperties properties) {
return schedulerFactoryBean -> {
// jdbc away
if (properties.getJobStoreType() == JobStoreType.JDBC) {
ApiBootQuartzProperties.Prop prop = properties.getProp();
// get prop class declared fields
Field[] fields = prop.getClass().getDeclaredFields();
Arrays.stream(fields).forEach(field -> {
try {
field.setAccessible(true);
String value = String.valueOf(field.get(prop));
PropKey propKey = field.getDeclaredAnnotation(PropKey.class);
// put prop to quartz properties
properties.getProperties().put(propKey.value(), value);
} catch (IllegalAccessException e) {
e.printStackTrace();
}
});
}
};
}
@Bean
@Order(1)
public SchedulerFactoryBeanCustomizer jobDataSourceCustomizer(ApiBootQuartzProperties properties, DataSource dataSource, @QuartzDataSource ObjectProvider<DataSource> quartzDataSource, ObjectProvider<PlatformTransactionManager> transactionManager) {
return (schedulerFactoryBean) -> {
if (properties.getJobStoreType() == JobStoreType.JDBC) {
DataSource dataSourceToUse = this.getDataSource(dataSource, quartzDataSource);
schedulerFactoryBean.setDataSource(dataSourceToUse);
PlatformTransactionManager txManager = transactionManager.getIfUnique();
if (txManager != null) {
schedulerFactoryBean.setTransactionManager(txManager);
}
}
};
}
public ApiBootQuartzAutoConfiguration(ApiBootQuartzProperties properties, ObjectProvider<SchedulerFactoryBeanCustomizer> customizers, JobDetail[] jobDetails, Map<String, Calendar> calendars, Trigger[] triggers, ApplicationContext applicationContext) {
this.properties = properties;
this.customizers = customizers;
this.jobDetails = jobDetails;
this.calendars = calendars;
this.triggers = triggers;
this.applicationContext = applicationContext;
}
/**
* properties needed to initialize Jdbc mode
*
* @param properties ApiBoot Quartz Properties
* @return SchedulerFactoryBeanCustomizer
*/
@Bean
@Order(0)
public SchedulerFactoryBeanCustomizer jobPropertiesCustomizer(ApiBootQuartzProperties properties) {
return schedulerFactoryBean -> {
// jdbc away
if (properties.getJobStoreType() == JobStoreType.JDBC) {
ApiBootQuartzProperties.Prop prop = properties.getProp();
// get prop class declared fields
Field[] fields = prop.getClass().getDeclaredFields();
Arrays.stream(fields).forEach(field -> {
try {
field.setAccessible(true);
String value = String.valueOf(field.get(prop));
PropKey propKey = field.getDeclaredAnnotation(PropKey.class);
// put prop to quartz properties
properties.getProperties().put(propKey.value(), value);
} catch (IllegalAccessException e) {
e.printStackTrace();
}
});
}
};
}
@Bean
@Order(1)
public SchedulerFactoryBeanCustomizer jobDataSourceCustomizer(ApiBootQuartzProperties properties, DataSource dataSource, @QuartzDataSource ObjectProvider<DataSource> quartzDataSource, ObjectProvider<PlatformTransactionManager> transactionManager) {
return (schedulerFactoryBean) -> {
if (properties.getJobStoreType() == JobStoreType.JDBC) {
DataSource dataSourceToUse = this.getDataSource(dataSource, quartzDataSource);
schedulerFactoryBean.setDataSource(dataSourceToUse);
PlatformTransactionManager txManager = transactionManager.getIfUnique();
if (txManager != null) {
schedulerFactoryBean.setTransactionManager(txManager);
}
}
};
}
@Bean
public SchedulerFactoryBeanCustomizer schedulerFactoryBeanCustomizer() {
return bean -> {
bean.setAutoStartup(properties.isAutoSyncEnabled());
};
}