Class JobsAutoConfiguration
@AutoConfigurationPackage adds edu.ucsb.cs156.jobs to the app's
auto-configuration packages, so Spring Boot's default entity and Spring Data repository scanning
picks up Job and JobsRepository *in addition to* the app's own classes. (Using
@EntityScan/@EnableJpaRepositories here instead would disable that default
scanning and break the consuming app's own entities and repositories.)
Every bean is @ConditionalOnMissingBean so an app can override any piece.
The jobsExecutor defaults to a single thread with an unbounded FIFO queue: jobs
execute strictly one at a time, in submission order, which prevents two concurrent jobs from
racing each other (e.g. double-launching a sync inserting the same rows). Known limitation: the
queue is in-memory, so jobs still queued when the app shuts down are lost and their Job rows
remain in "running" status. Apps that want concurrency set app.jobs.core-pool-size /
app.jobs.max-pool-size / app.jobs.queue-capacity.
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionorg.springframework.core.task.AsyncTaskExecutorjobsExecutor(int corePoolSize, int maxPoolSize, int queueCapacity) libJobsContextFactory(JobLogRepository jobLogRepository, org.springframework.transaction.PlatformTransactionManager transactionManager) libJobsRateLimit(String rateLimitMsString)
-
Constructor Details
-
JobsAutoConfiguration
public JobsAutoConfiguration()
-
-
Method Details
-
libJobsContextFactory
@Bean @ConditionalOnMissingBean public JobContextFactory libJobsContextFactory(JobLogRepository jobLogRepository, org.springframework.transaction.PlatformTransactionManager transactionManager) -
libJobsService
-
libJobsController
-
libJobsRateLimit
@Bean @ConditionalOnMissingBean public JobRateLimit libJobsRateLimit(@Value("${app.jobs.rate-limit-ms:200}") String rateLimitMsString) -
jobsExecutor
@Bean(name="jobsExecutor") @ConditionalOnMissingBean(name="jobsExecutor") public org.springframework.core.task.AsyncTaskExecutor jobsExecutor(@Value("${app.jobs.core-pool-size:1}") int corePoolSize, @Value("${app.jobs.max-pool-size:1}") int maxPoolSize, @Value("${app.jobs.queue-capacity:2147483647}") int queueCapacity)
-