Spring Batch utilise un référentiel de travaux basé sur la base de données par défaut, de sorte qu'une table pour la gestion des travaux est créée sans autorisation. Si vous êtes un utilisateur de base de données qui ne dispose pas de l'autorisation Créer pour la table, ou si vous êtes préoccupé par les performances, vous pouvez utiliser le référentiel de travaux en mémoire. Cependant, dans le cas du référentiel de travaux en mémoire, des fonctions telles que le redémarrage ne seront pas disponibles, donc son utilisation dépendra des exigences non fonctionnelles.
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.
La solution la plus simple consiste à ne pas utiliser la fonction AutoConfig de DataSource.
@SpringBootApplication(exclude= {DataSourceAutoConfiguration.class})
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args).close();
}
}
[API Spring Batch 3.0.8.RLEASE](http: // https: //docs.spring.io/spring-batch/trunk/apidocs/) Explication du type d'annotation Activer le traitement par lots
If a user does not provide a DataSource within the context, a Map based JobRepository will be used.
Même si le DataSource est AutoConfig, vous pouvez utiliser le JobRepository basé sur la carte en remplaçant JobRepository, JobExplorer et JobLauncher.
@Configuration
@EnableBatchProcessing
public class BatchConfig {
......
/**
* in-utiliser le référentiel de tâches de mémoire
*
* @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;
}
};
}
}
Modifiez ʻapplication.properties` comme suit pour empêcher la génération de la table de métadonnées.
application.properties
spring.batch.initializer.enabled=false
Référence: https://blog.ik.am/entries/409 https://qiita.com/blackawa/items/e9eaa254cbe27e257e10
Recommended Posts