Spring Batch verwendet standardmäßig ein DB-basiertes Job-Repository, sodass eine Tabelle für die Jobverwaltung ohne Berechtigung erstellt wird. Wenn Sie ein DB-Benutzer sind, der keine Berechtigung zum Erstellen von Tabellen hat, oder wenn Sie Bedenken hinsichtlich der Leistung haben, können Sie das In-Memory-Job-Repository verwenden. Im Fall des In-Memory-Job-Repositorys sind Funktionen wie Neustart jedoch nicht verfügbar. Ob sie verwendet werden sollen, hängt also von den nicht funktionalen Anforderungen ab.
Note that the in-memory repository is volatile and so does not allow restart between JVM instances. It also cannot guarantee that two job instances with the same parameters are launched simultaneously, and is not suitable for use in a multi-threaded Job, or a locally partitioned Step. So use the database version of the repository wherever you need those features.
Die einfachste Lösung besteht darin, die AutoConfig der DataSource nicht zu verwenden.
@SpringBootApplication(exclude= {DataSourceAutoConfiguration.class})
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args).close();
}
}
[Spring Batch 3.0.8.RLEASE API](http: // https: //docs.spring.io/spring-batch/trunk/apidocs/) Erläuterung des Annotationstyps Aktivieren Sie die Stapelverarbeitung
If a user does not provide a DataSource within the context, a Map based JobRepository will be used.
Selbst wenn die DataSource AutoConfig ist, können Sie das kartenbasierte JobRepository verwenden, indem Sie JobRepository, JobExplorer und JobLauncher überschreiben.
@Configuration
@EnableBatchProcessing
public class BatchConfig {
......
/**
* in-Verwenden Sie das Speicherjob-Repository
*
* @return
*/
@Bean
DefaultBatchConfigurer batchConfigurer() {
return new DefaultBatchConfigurer() {
private JobRepository jobRepository;
private JobExplorer jobExplorer;
private JobLauncher jobLauncher;
{
MapJobRepositoryFactoryBean jobRepositoryFactory = new MapJobRepositoryFactoryBean();
try {
this.jobRepository = jobRepositoryFactory.getObject();
MapJobExplorerFactoryBean jobExplorerFactory = new MapJobExplorerFactoryBean(jobRepositoryFactory);
this.jobExplorer = jobExplorerFactory.getObject();
SimpleJobLauncher jobLauncher = new SimpleJobLauncher();
jobLauncher.setJobRepository(jobRepository);
jobLauncher.afterPropertiesSet();
this.jobLauncher = jobLauncher;
} catch (Exception e) {
}
}
@Override
public JobRepository getJobRepository() {
return jobRepository;
}
@Override
public JobExplorer getJobExplorer() {
return jobExplorer;
}
@Override
public JobLauncher getJobLauncher() {
return jobLauncher;
}
};
}
}
Ändern Sie application.properties
wie folgt, um die Generierung der Metadatentabelle zu verhindern.
application.properties
spring.batch.initializer.enabled=false
Referenz: https://blog.ik.am/entries/409 https://qiita.com/blackawa/items/e9eaa254cbe27e257e10
Recommended Posts