[JAVA] Comment utiliser le référentiel de jobs en mémoire avec Spring Batch

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.

Solution 1

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.

Solution 2

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

Comment utiliser le référentiel de jobs en mémoire avec Spring Batch
Comment utiliser Lombok au printemps
Comment utiliser CommandLineRunner dans Spring Batch of Spring Boot
Comment utiliser InjectorHolder dans OpenAM
Comment utiliser ModelMapper (Spring boot)
Comment utiliser les classes en Java?
Comment appeler et utiliser l'API en Java (Spring Boot)
[Tutoriel] Spring Batch
J'ai essayé Spring Batch
Comment utiliser le référentiel de jobs en mémoire avec Spring Batch
Étape de boucle avec Spring Batch
Éléments à prendre en compte lors de l'exécution d'un travail spécifié à l'aide de Spring Batch
Prise en charge multilingue de Java Comment utiliser les paramètres régionaux
Comment utiliser le volume nommé dans docker-compose.yml
Comment inclure Spring Tool dans Eclipse 4.6.3?
Comment utiliser MySQL dans le didacticiel Rails
Comment définir et utiliser un profil avec une configuration basée sur des annotations dans le framework Spring
Comment utiliser les variables d'environnement dans RubyOnRails
Comprendre en 5 minutes !! Comment utiliser Docker
Comment utiliser credentials.yml.enc introduit à partir de Rails 5.2
Comment utiliser ExpandableListView dans Android Studio
[Rails] Comment utiliser les boîtes de sélection dans Ransack
Comment utiliser h2db intégré avec Spring Boot
Comment utiliser les attributs de session Spring Boot (@SessionAttributes)
Comment ajouter un chemin de classe dans Spring Boot
Comment utiliser JQuery dans Rails 6 js.erb
Comment se lier avec un fichier de propriétés dans Spring Boot
Comment définir plusieurs orm.xml dans Spring4, JPA2.1
[Rails] Comment utiliser PostgreSQL dans l'environnement Vagrant
Comment utiliser Map
Comment utiliser rbenv
Comment utiliser with_option
Comment utiliser fields_for
Comment utiliser java.util.logging
Comment utiliser la carte
Comment utiliser collection_select
Comment utiliser Twitter4J
Utilisez Interceptor au printemps
Comment utiliser MapStruct
Comment utiliser TreeSet
Comment utiliser l'identité
Comment utiliser le hachage
Comment utiliser Dozer.mapper
Comment utiliser Gradle
Comment utiliser org.immutables
Comment utiliser java.util.stream.Collector
Comment utiliser VisualVM
Comment utiliser Map
[Ruby] Comment utiliser la sortie standard dans le branchement conditionnel
Comment utiliser Struts2 * Spring Framework (plugin Spring) Version de juin 2017
Comment utiliser la bibliothèque Z3 dans Scala avec Eclipse
Comment créer un projet Spring Boot dans IntelliJ
Comprendre comment utiliser le décodeur JSON de Swift en 3 minutes
Comment utiliser la bibliothèque JDD dans Scala avec Eclipse
Comment tester l'écran de téléchargement de fichiers avec Spring + Selenium
Remarques sur l'utilisation des expressions régulières en Java
Comment utiliser l'API Chain