Heim  >  Artikel  >  Java  >  Teilen Sie die Einführung von Spring Batch

Teilen Sie die Einführung von Spring Batch

零下一度
零下一度Original
2017-06-17 11:52:311911Durchsuche

Dieser Artikel führt Sie hauptsächlich in die relevanten Informationen für den Einstieg in Spring Batch ein. Die Einführung im Artikel ist sehr detailliert und hat einen gewissen Referenz- und Lernwert für alle Freunde, die sie benötigen. Bitte folgen Sie dem Herausgeber, um gemeinsam zu lernen .

SpringBatch-Einführung:

SpringBatch ist ein Framework für die Parallelverarbeitung großer Datenmengen . Es wird normalerweise für die Offline-Migration von Daten und die Datenverarbeitung verwendet. Es unterstützt Transaktionen, Parallelität, Prozess, Überwachung sowie vertikale und horizontale Erweiterung und bietet eine einheitliche Schnittstellenverwaltung und Aufgabenverwaltung, die von SpringSource und Accenture zur Vereinheitlichung der Branchenparallele entwickelt wurde Verarbeitungsstandards stellen Entwicklern eine Reihe von Frameworks zur Verfügung, die die Entwicklung erleichtern.

Offizielle Adresse: github.com/spring-projects/spring-batch

  • SpringBatch selbst bietet Wiederholung, Ausnahmebehandlung, Überspringen, Neustart, Statistiken zur Aufgabenverarbeitung, Ressourcenverwaltung und andere Funktionen – das sind die Hauptgründe, warum Entwickler es schätzen;

  • SpringBatch ist ein leichtes Batch-Verarbeitungs-Framework;

  • SpringBatch-Struktur ist geschichtet, Geschäfts- und Verarbeitungsstrategien und -strukturen sind getrennt;

  • Die laufende Instanz der AufgabeStatus, Ausführungsdaten und Parameter werden alle sein In die Datenbank implementiert;

Schnellstart

pom.xml Hinzugefügt


 <dependency>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-starter-batch</artifactId>
</dependency>

BatchConfig erstellen (kann ein anderer Klassenname sein)


@Configuration
@EnableBatchProcessing
public class BatchConfig {
 // tag::readerwriterprocessor[]
 @Bean
 public FlatFileItemReader<Person> flatFileItemReader() {
  FlatFileItemReader<Person> reader = new FlatFileItemReader<>();
  reader.setResource(new ClassPathResource("sample-data.csv"));
  FixedLengthTokenizer fixedLengthTokenizer = new FixedLengthTokenizer();
  reader.setLineMapper(new DefaultLineMapper<Person>() {{
   setLineTokenizer(new DelimitedLineTokenizer() {{
    setNames(new String[]{"firstName", "lastName"});
   }});
   setFieldSetMapper(new BeanWrapperFieldSetMapper<Person>() {{
    setTargetType(Person.class);
   }});
  }});
  return reader;
 }
 @Bean
 public JdbcPagingItemReader<Person> jdbcPagingItemReader(DataSource dataSource) {
  JdbcPagingItemReader<Person> reader = new JdbcPagingItemReader<>();
  reader.setDataSource(dataSource);
  reader.setFetchSize(100);
  reader.setQueryProvider(new MySqlPagingQueryProvider() {{
   setSelectClause("SELECT person_id,first_name,last_name");
   setFromClause("from people");
   setWhereClause("last_name=:lastName");
   setSortKeys(new HashMap<String, Order>() {{
    put("person_id", Order.ASCENDING);
   }});
  }});
  reader.setParameterValues(new HashMap<String, Object>() {{
   put("lastName", "DOE");
  }});
  reader.setRowMapper(new BeanPropertyRowMapper<>(Person.class));
  return reader;
 }
 @Bean
 public JdbcBatchItemWriter<Person> jdbcBatchItemWriter(DataSource dataSource) {
  JdbcBatchItemWriter<Person> writer = new JdbcBatchItemWriter<>();
  writer.setItemSqlParameterSourceProvider(new BeanPropertyItemSqlParameterSourceProvider<>());
  writer.setSql("INSERT INTO people (first_name, last_name) VALUES (:firstName, :lastName)");
  writer.setDataSource(dataSource);
  return writer;
 }
 /*@Bean
 public FlatFileItemWriter<Person> flatFileItemWriter(DataSource dataSource) {
  FlatFileItemWriter<Person> writer = new FlatFileItemWriter<>();
  writer.setAppendAllowed(true);
  writer.setEncoding("UTF-8");
//  writer.set(dataSource);
  return writer;
 }*/
 // end::readerwriterprocessor[]
 // tag::jobstep[]
 @Bean
 public Job importUserJob(JobBuilderFactory jobBuilderFactory, JobCompletionNotificationListener listener, Step step) {
  return jobBuilderFactory.get("importUserJob")
    .incrementer(new RunIdIncrementer())
    .listener(listener)
    .start(step)
    .build();
 }
 @Bean
 public Step step1(StepBuilderFactory stepBuilderFactory, PersonItemProcessor processor, ItemWriter jdbcBatchItemWriter, ItemReader flatFileItemReader) {
  /*CompositeItemProcessor compositeItemProcessor = new CompositeItemProcessor();
  compositeItemProcessor.setDelegates(Lists.newArrayList(processor, processor));*/
  return stepBuilderFactory.get("step1")
    .<Person, Person>chunk(10)
    .reader(flatFileItemReader)
    .processor(processor)
    .writer(jdbcBatchItemWriter)
    .build();
 }
 // end::jobstep[]
}

Spring Batchs mehrschichtige Architektur

  • Infrastrukturrichtlinienverwaltung: einschließlich Wiederholung von Aufgabenfehlern, Ausnahmebehandlung, Transaktionen, Überspringen sowie Dateneingabe und -ausgabe (Textdateien, DB, Nachricht)

  • Kern: Der Kern von springBatch, einschließlich JobLauch, Job, Schritt usw.

  • Anwendung: Geschäftsabwicklung, Aufgaben erstellen, Bestimmen Sie die Ausführungsmethode der Aufgabe (geplante Aufgaben, manuelle Auslösung usw.)


Spring Batch-Ausführungsprozess

Zusammenfassung

Das obige ist der detaillierte Inhalt vonTeilen Sie die Einführung von Spring Batch. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn