[JAVA] Comment utiliser CommandLineRunner dans Spring Batch of Spring Boot

Quand j'ai étudié comment créer une application console avec Spring Boot, il est dit que CommandLineRunner ou ApplicationRunner est utilisé lors de la lecture du guide de référence.

À propos, lorsque j'ai étudié en quelque sorte la classe d'implémentation de CommandLineRunner '', il y avait une classe appelée JobLauncherCommandLineRunner '' pour exécuter Spring Batch avec Spring Boot. Le comportement par défaut de cette classe est d'exécuter tous les Job` '' dans ce contexte. Cependant, il est écrit qu'un travail spécifique peut être exécuté en spécifiant `` jobName```. Je me demandais comment mettre en œuvre cela, alors j'ai regardé la source de la partie pertinente.

JobLauncherCommandLineRunner


public class JobLauncherCommandLineRunner
	implements CommandLineRunner, ApplicationEventPublisherAware {

	@Autowired(required = false)
	public void setJobs(Collection<Job> jobs) {
		this.jobs = jobs;
	}

	@Override
	public void run(String... args) throws JobExecutionException {
		logger.info("Running default command line with: " + Arrays.asList(args));
		launchJobFromProperties(StringUtils.splitArrayElementsIntoProperties(args, "="));
}


	private void executeLocalJobs(JobParameters jobParameters)
			throws JobExecutionException {
		for (Job job : this.jobs) {
			if (StringUtils.hasText(this.jobNames)) {
				String[] jobsToRun = this.jobNames.split(",");
				if (!PatternMatchUtils.simpleMatch(jobsToRun, job.getName())) {
					logger.debug("Skipped job: " + job.getName());
					continue;
				}
			}
			execute(job, jobParameters);
		}
}

Après le démarrage de Spring Boot, la méthode run de` `` CommandLineRunner est exécutée. Le travail commence avec la mise en œuvre ici. De plus, l'injection de setJbos inclura toutes les collections `` Job. Ensuite, la méthode executeLocalJobs est utilisée pour démarrer tous les Jobun par un. À ce moment-là, si jobName '' est spécifié, seuls les travaux correspondants sont démarrés et les autres sont ignorés.

Je me suis demandé comment exécuter uniquement une fonction spécifique avec une touche dans l'application console ~ Je pensais que même s'il y avait plusieurs CommandLineRunner '', ils seront tous exécutés ~, mais si vous le faites comme ça regardez bien.

Recommended Posts

Comment utiliser CommandLineRunner dans Spring Batch of Spring Boot
Comment utiliser Lombok au printemps
Comment utiliser ModelMapper (Spring boot)
Comment utiliser le référentiel de jobs en mémoire avec Spring Batch
Comment appeler et utiliser l'API en Java (Spring Boot)
[Sprint Boot] Comment utiliser les trois types de SqlParameterSource définis dans org.springframework.jdbc.core.namedparam
Comment utiliser MyBatis2 (iBatis) avec Spring Boot 1.4 (Spring 4)
Comment utiliser h2db intégré avec Spring Boot
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 créer un projet Spring Boot dans IntelliJ
Comment démarrer par environnement avec Spring Boot de Maven
Comment définir des variables d'environnement dans le fichier de propriétés de l'application Spring Boot
Remarques sur l'utilisation de Spring Data JDBC
Comment utiliser setDefaultCloseOperation () de JFrame
Comment utiliser InjectorHolder dans OpenAM
Comment utiliser les classes en Java?
Comment modifier la valeur de paramètre de application.properties au moment du démarrage dans Spring Boot
Utilisez @ControllerAdvice, @ExceptionHandler, HandlerExceptionResolver dans Spring Boot pour intercepter les exceptions
Comment contrôler les transactions dans Spring Boot sans utiliser @Transactional
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 la même classe Mapper dans plusieurs sources de données avec Spring Boot + MyBatis
Comment utiliser Docker dans VSCode DevContainer
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
[Java] [Maven3] Résumé de l'utilisation de Maven3
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 diviser un fichier de message Spring Boot
Découvrons comment recevoir avec Request Body avec l'API REST de Spring Boot
Comment utiliser ExpandableListView dans Android Studio
[Spring Boot] J'ai étudié comment implémenter le post-traitement de la demande reçue.
Comment lire le corps de la requête plusieurs fois avec Spring Boot + Spring Security
Étapes pour rendre Spring Boot capable de faire référence à la valeur dans le fichier de propriétés
Résumé de la sélection des éléments dans Selenium
[Rails] Comment utiliser les boîtes de sélection dans Ransack
Comment réduire l'image de Spring Boot Docker
L'histoire de la montée de la série Spring Boot 1.5 à la série 2.1
Utiliser le filtre de servlet avec Spring Boot [compatible Spring Boot 1.x, 2.x]
Sortie de la façon d'utiliser la méthode slice
Comment définir plusieurs orm.xml dans Spring4, JPA2.1
[Rails] Comment utiliser PostgreSQL dans l'environnement Vagrant
[Spring Boot] Comment se référer au fichier de propriétés
Résumé de ce que j'ai appris dans Spring Batch
Spring Boot - Comment définir le délai d'expiration de la session
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