[Java] [Spring] [Spring Batch] Ne pas créer / utiliser la table de métadonnées Spring Batch

supposition

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

environnement

Comment empêcher la création d'une table

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

Comment éviter d'utiliser une table

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;
    }
}

Ramasser les oreilles tombées liées à Spring Boot

Désactiver la configuration automatique par lots?

Lorsque je l'ai désactivé, il y avait différentes classes que je devais créer, alors je l'ai activé.

Est-il possible d'activer la configuration automatique de la source de données?

J'ai préparé Batch Configurer moi-même, donc ça semble OK.

Recommended Posts

[Java] [Spring] [Spring Batch] Ne pas créer / utiliser la table de métadonnées Spring Batch
[Java] N'utilisez pas "+" dans append!
Téléchargement de fichiers avec Spring Boot (ne pas utiliser de fichier en plusieurs parties)
Utilisez-vous Stream en Java?
Créez un lot à la demande simple avec Spring Batch
Créer un projet Java Spring Boot avec IntelliJ
Ne déclarez pas de variables dans List en Java
[Java] Pourquoi vous embêtez-vous à utiliser l'interface (Spring est également disponible)
Spring Java
Prise en charge de CheckStyle "Ne pas utiliser de conditions en ligne"
[JAVA] [Spring] [MyBatis] Utiliser IN () avec SQL Builder
[Spring Batch] Données de la table de sortie dans un fichier CSV