[Java] [Spring] [Spring Batch] Erstellen / verwenden Sie keine Spring Batch-Metadatentabelle

Annahme

Spring Batch dient zur Verwendung einer Datenbank zum Speichern des Status von Jobs und anderen Dingen.

Es ist normalerweise praktisch, aber es ist ein wenig ärgerlich, wenn es nicht so schwer ist.

Es ist eine Methode, die eine solche Tabelle nicht verwendet oder erstellt.

Dieser Artikel war sehr hilfreich. : smile: Wenn Sie die Metatabelle nicht in Spring Batch verwenden möchten, sie aber verwendet wird

Umgebung

So verhindern Sie, dass eine Tabelle erstellt wird

Die Tabelle wird erstellt, während Spring Boot sie automatisch konfiguriert.

Du kannst es gut machen.

Aber diesmal wird es weggelassen.

Fügen Sie der Eigenschaftendatei oder der Yaml-Datei die folgenden Einstellungen hinzu.

application.properties


spring.batch.initializer.enabled=false

So vermeiden Sie die Verwendung einer Tabelle

Bitte lesen Sie diesen Artikel. Wenn Sie die Metatabelle nicht in Spring Batch verwenden möchten, sie aber verwendet wird

Alternativ können Sie Ihre eigene BatchConfigurer-Klasse erstellen (ich habe sie erstellt, weil ich einen Umweg gemacht habe).

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;

/**
 *Verwenden Sie das Job Repository ohne Datenbank
 *
 */
@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;
    }
}

Aufgenommene Ohren im Zusammenhang mit Spring Boot aufheben

Automatische Stapelkonfiguration deaktivieren?

Als ich es deaktivierte, musste ich verschiedene Klassen erstellen, also habe ich es aktiviert.

Ist es in Ordnung, die automatische Datenquellenkonfiguration zu aktivieren?

Ich habe Batch Configurer selbst vorbereitet, daher scheint es in Ordnung zu sein.

Recommended Posts

[Java] [Spring] [Spring Batch] Erstellen / verwenden Sie keine Spring Batch-Metadatentabelle
[Java] Verwenden Sie nicht "+" im Anhang!
Datei-Upload mit Spring Boot (keine mehrteilige Datei verwenden)
Verwenden Sie Stream in Java?
Erstellen Sie mit Spring Batch eine einfache On-Demand-Charge
Erstellen Sie mit IntelliJ ein Java Spring Boot-Projekt
Deklarieren Sie keine Variablen in List in Java
[Java] Warum verwenden Sie die Benutzeroberfläche (Spring ist ebenfalls verfügbar)?
Frühling Java
Unterstützung für CheckStyle "Verwenden Sie keine Inline-Bedingungen"
[JAVA] [Spring] [MyBatis] Verwenden Sie IN () mit SQL Builder
[Spring Batch] Gibt Tabellendaten in eine CSV-Datei aus