Spring Batch est conçu pour utiliser une base de données pour stocker l'état des tâches et des choses.
C'est généralement pratique, mais c'est un peu ennuyeux quand ce n'est pas un lot aussi lourd.
C'est une méthode qui n'utilise ni ne fabrique un tel tableau.
Cet article a été très utile. : sourire: Si vous ne souhaitez pas utiliser la méta-table dans Spring Batch, mais qu'elle est utilisée
La table est créée pendant que Spring Boot la configure automatiquement.
Vous pouvez bien le faire.
Mais cette fois, il est omis.
Ajoutez les paramètres suivants au fichier de propriétés ou au fichier yaml.
application.properties
spring.batch.initializer.enabled=false
Veuillez lire cet article. Si vous ne souhaitez pas utiliser la méta-table dans Spring Batch, mais qu'elle est utilisée
Vous pouvez également créer votre propre classe BatchConfigurer (je l'ai créée parce que j'ai fait un détour).
MyBatchConfigurer.java
import javax.annotation.PostConstruct;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.batch.core.configuration.BatchConfigurationException;
import org.springframework.batch.core.configuration.annotation.BatchConfigurer;
import org.springframework.batch.core.explore.JobExplorer;
import org.springframework.batch.core.explore.support.MapJobExplorerFactoryBean;
import org.springframework.batch.core.launch.JobLauncher;
import org.springframework.batch.core.launch.support.SimpleJobLauncher;
import org.springframework.batch.core.repository.JobRepository;
import org.springframework.batch.core.repository.support.MapJobRepositoryFactoryBean;
import org.springframework.batch.support.transaction.ResourcelessTransactionManager;
import org.springframework.stereotype.Component;
import org.springframework.transaction.PlatformTransactionManager;
/**
*Utiliser le référentiel de jobs sans base de données
*
*/
@Component
public class MyBatchConfigurer implements BatchConfigurer {
private static final Log LOG = LogFactory.getLog(MyBatchConfigurer.class);
private PlatformTransactionManager transactionManager;
private JobRepository jobRepository;
private JobLauncher jobLauncher;
private JobExplorer jobExplorer;
@PostConstruct
public void initialize() {
if (this.transactionManager == null) {
LOG.info("Create ResourceLessTransactionManager.");
this.transactionManager = new ResourcelessTransactionManager();
}
try {
MapJobRepositoryFactoryBean repoFactory
= new MapJobRepositoryFactoryBean(this.transactionManager);
repoFactory.afterPropertiesSet();
this.jobRepository = repoFactory.getObject();
MapJobExplorerFactoryBean explFactory
= new MapJobExplorerFactoryBean(repoFactory);
explFactory.afterPropertiesSet();
this.jobExplorer = explFactory.getObject();
this.jobLauncher = createJobLauncher();
} catch (Exception ex) {
LOG.fatal(ex.getMessage(), ex);
throw new BatchConfigurationException(ex);
}
}
protected JobLauncher createJobLauncher() throws Exception {
SimpleJobLauncher launcher = new SimpleJobLauncher();
launcher.setJobRepository(jobRepository);
launcher.afterPropertiesSet();
return launcher;
}
@Override
public JobRepository getJobRepository() throws Exception {
return jobRepository;
}
@Override
public PlatformTransactionManager getTransactionManager() throws Exception {
return transactionManager;
}
@Override
public JobLauncher getJobLauncher() throws Exception {
return jobLauncher;
}
@Override
public JobExplorer getJobExplorer() throws Exception {
return jobExplorer;
}
}
Lorsque je l'ai désactivé, il y avait différentes classes que je devais créer, alors je l'ai activé.
J'ai préparé Batch Configurer moi-même, donc ça semble OK.
Recommended Posts