1. <nobr id="easjo"><address id="easjo"></address></nobr>

      <track id="easjo"><source id="easjo"></source></track>
      1. 
        

      2. <bdo id="easjo"><optgroup id="easjo"></optgroup></bdo>
      3. <track id="easjo"><source id="easjo"><em id="easjo"></em></source></track><option id="easjo"><span id="easjo"><em id="easjo"></em></span></option>
          貴州做網站公司
          貴州做網站公司~專業!靠譜!
          10年網站模板開發經驗,熟悉國內外開源網站程序,包括DEDECMS,WordPress,ZBlog,Discuz! 等網站程序,可為您提供網站建設,網站克隆,仿站,網頁設計,網站制作,網站推廣優化等服務。我們專注高端營銷型網站,企業官網,集團官網,自適應網站,手機網站,網絡營銷,網站優化,網站服務器環境搭建以及托管運維等。為客戶提供一站式網站解決方案?。?!

          Spring Batch

          來源:互聯網轉載 時間:2024-01-29 07:58:30
          Spring Batch

          Spring Batch框架工作原理

          SpringBatch框架。它包含以下主要構建塊

          一個 Batch(批處理)過程由一個 Job(作業)組成。這個實體封裝了整個批處理過程。

          一個 Job(作業)可以由一個或多個 Step(步驟)組成。在大多數情況下,一個步驟將讀取數據(通過 ItemReader),處理數據(使用 ItemProcessor),然后寫入數據(通過 ItemWriter)。

          JobLauncher處理啟動一個 Job(作業)。

          JobRepository存儲關于配置和執行的 Job(作業)的元數據。

          示例

          pom依賴

                  <dependency>            <groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-starter-batch</artifactId>        </dependency>        <dependency>            <groupId>org.springframework.batch</groupId>            <artifactId>spring-batch-test</artifactId>            <scope>test</scope>        </dependency>        <dependency>            <groupId>MySQL</groupId>            <artifactId>mysql-connector-java</artifactId>            <version>8.0.15</version>        </dependency>

          配置 Spring Batch Job

          創建一個 BatchConfig類,它將配置Spring Batch。類頂部的@Configuration注解表明Spring可以使用該類作為bean定義的源。

          我們添加了@EnableBatchProcessing注解,它支持所有所需 SpringBatch特性。它還提供了設置批處理作業的基本配置。

          通過添加這個注解會需要很多操作。下面是 @EnableBatchProcessing創建的概述:

          • JobRepository (bean名稱 "jobRepository")

          • JobLauncher (bean名稱 "jobLauncher")

          • JobRegistry (bean名稱 "jobRegistry")

          • JobExplorer (bean名稱 "jobExplorer")

          • PlatformTransactionManager (bean名稱 "transactionManager")

          • JobBuilderFactory (bean名稱"jobBuilders"),它可以方便地防止您必須將作業存儲庫注入到每個Job(作業)中

          • StepBuilderFactory (bean名稱 "stepBuilders"),以方便您避免將作業存儲庫和事務管理器注入到每個Step(步驟)中

          為了使 SpringBatch使用基于Map的 JobRepository,我們需要擴展 DefaultBatchConfigurer。重寫 setDataSource()方法以不設置 DataSource。這將導致自動配置使用基于Map的 JobRepository。

          import org.springframework.batch.core.configuration.annotation.DefaultBatchConfigurer;import org.springframework.batch.core.configuration.annotation.EnableBatchProcessing;import org.springframework.context.annotation.Configuration;@Configuration@EnableBatchProcessingpublic class BatchConfig extends DefaultBatchConfigurer {}

          配置Hello World Spring Batch 作業

          @Configurationpublic class HelloWorldJobConfig {    @Bean    public Job helloWorlJob(JobBuilderFactory jobBuilders, StepBuilderFactory stepBuilders) {        return jobBuilders.get("helloWorldJob").start(helloWorldStep(stepBuilders)).build();    }    @Bean    public Step helloWorldStep(StepBuilderFactory stepBuilders) {        return stepBuilders.get("helloWorldStep").<Person, String>chunk(10)                .reader(reader()).processor(processor()).writer(writer()).build();    }    @Bean    public FlatFileItemReader<Person> reader() {        return new FlatFileItemReaderBuilder<Person>().name("personItemReader")                .resource(new ClassPathResource("csv/persons.csv"))                .delimited().names(new String[]{"firstName", "lastName"}).targetType(Person.class).build();    }    @Bean    public PersonItemProcessor processor() {        return new PersonItemProcessor();    }    @Bean    public FlatFileItemWriter<String> writer() {        return new FlatFileItemWriterBuilder<String>().name("greetingItemWriter")                .resource(new FileSystemResource("txt/greetings.txt"))                .lineAggregator(new PassThroughLineAggregator<>()).build();    }}

          處理數據

          public class PersonItemProcessor implements ItemProcessor<Person, String> {    private static final Logger LOGGER = LoggerFactory.getLogger(PersonItemProcessor.class);    @Override    public String process(Person person) throws Exception {        String greeting = "Hello " + person.getFirstName() + " " + person.getLastName() + "!";        LOGGER.info("converting '{}' into '{}'", person, greeting);        return greeting;    }}

          測試Spring Batch 示例

          使用 @RunWith@SpringBootTest測試注解告訴 JUnit使用Spring的測試支持運行,并使用SpringBoot的支持引導。

          SpringBatch附帶一個 JobLauncherTestUtils實用程序類,用于測試批處理作業。

          我們首先創建一個內部 BatchTestConfig類,將helloWorld作業添加到 JobLauncherTestUtils bean中。然后使用此bean的 launchJob()方法運行批處理作業。

          如果執行的作業沒有任何錯誤,則 ExitCode的值為 COMPLETED。

          @RunWith(SpringRunner.class)@SpringBootTest(classes = {XcSpringbootApplicationTests.BatchTestConfig.class})public class XcSpringbootApplicationTests {    @Autowired    private JobLauncherTestUtils jobLauncherTestUtils;    @Test    public void testHelloWorldJob() throws Exception {        JobExecution jobExecution = jobLauncherTestUtils.launchJob();        assertThat(jobExecution.getExitStatus().getExitCode()).isEqualTo("COMPLETED");    }    @Configuration    @Import({BatchConfig.class, HelloWorldJobConfig.class})    static class BatchTestConfig {        @Autowired        private Job helloWorlJob;        @Bean        JobLauncherTestUtils jobLauncherTestUtils() throws NoSuchJobException {            JobLauncherTestUtils jobLauncherTestUtils = new JobLauncherTestUtils();            jobLauncherTestUtils.setJob(helloWorlJob);            return jobLauncherTestUtils;        }    }}

          參考:https://codenotfound.com/spring-batch-example.html

          標簽:springbatch-

          網絡推廣與網站優化公司(網絡優化與推廣專家)作為數字營銷領域的核心服務提供方,其價值在于通過技術手段與策略規劃幫助企業提升線上曝光度、用戶轉化率及品牌影響力。這...

          在當今數字化時代,公司網站已成為企業展示形象、傳遞信息和開展業務的重要平臺。然而,對于許多公司來說,網站建設的價格是一個關鍵考量因素。本文將圍繞“公司網站建設價...

          在當今的數字化時代,企業網站已成為企業展示形象、吸引客戶和開展業務的重要平臺。然而,對于許多中小企業來說,高昂的網站建設費用可能會成為其發展的瓶頸。幸運的是,隨...

          沈陽市疾病防控中心的地址?遼寧省疾病預防控制中心(沙洋路)地址:遼寧省沈陽市沙洋路242號,沙洋路以北,南京南街以東。沈陽市疾病預防控制中心地址:皇姑區岐山中路37號,岐山一中門前岐山路東南一點。沈陽市疾病防控中心的地址?沈陽市疾病預防控制中心位于沈陽市皇姑區長江街19號(皇姑交警大隊斜對面)。...

          如何登陸網頁yy?1.一般登錄yy都是通過yy通;2.登錄后點擊yy安全中心;3.點擊賬戶管理;4.點擊打開yy登錄;5.如果成功開通,可以登錄賬號,也不怕忘記通行證。YY在那里登陸/?該方法如下:1.一般登錄YY都是通過YY關口;2.登錄后點擊YY安全中心;3.點擊賬戶管理;4.點擊打開YY號碼登錄;5.如果成功開通,可以登錄賬號,也不怕忘記通行證。怎么在網頁上登陸賬號看YY直播?1.一般登錄Y...

          巴西龜的智商相當于人的幾歲?海龜的智商很低,還不到一歲小孩的智商。它們養的時候需要很長時間才能分辨主人,巴西龜是智商最高的龜。如果你買了一只小巴西龜,開始飼養,你必須每天自己喂它,這樣它才能把你和別人區分開來,知道你是主人。因為巴西龜能記住主人,所以能和它培養感情。熟悉之后可以放在家里,休息的時候不會打擾你。我甚至會像狗一樣把它帶在身邊,在你出門后老實待著,等你回來在門口等你。至于更科學、更有根據...

          TOP
          国产初高中生视频在线观看|亚洲一区中文|久久亚洲欧美国产精品|黄色网站入口免费进人
          1. <nobr id="easjo"><address id="easjo"></address></nobr>

              <track id="easjo"><source id="easjo"></source></track>
              1. 
                

              2. <bdo id="easjo"><optgroup id="easjo"></optgroup></bdo>
              3. <track id="easjo"><source id="easjo"><em id="easjo"></em></source></track><option id="easjo"><span id="easjo"><em id="easjo"></em></span></option>