当前位置: 首页 > news >正文

app模板下载网站中山网站建设文化

app模板下载网站,中山网站建设文化,网页设计与制作就业前景,响应式网站建设代理商目录 文档基础概念Tasklet方式示例Chunk方式示例参考文章 文档 https://docs.spring.io/spring-batch/docs/4.3.9/reference/html/index.html 基础概念 JobLauncher:作业启动器,启动作业的入口。对应的实现类为SimpleJobLauncher。Job:作业…

在这里插入图片描述

目录

    • 文档
    • 基础概念
    • Tasklet方式示例
    • Chunk方式示例
    • 参考文章

文档

  • https://docs.spring.io/spring-batch/docs/4.3.9/reference/html/index.html

基础概念

  • JobLauncher:作业启动器,启动作业的入口。对应的实现类为SimpleJobLauncher。
  • Job:作业,用于配置作业的相关配置,一个作业可以配置多个步骤,步骤之间是有序的。
  • Step:步骤,作业具体执行的业务逻辑,一个Job可以配置多个Step。步骤有两种实现方式:
    • Tasklet方式:所有作业逻辑写在一个方法中。
    • Chunk方式:将一个完整的作业逻辑根据作用拆分到三个方法中
      • ItemReader:负责从数据源中读数据(如从文件、数据库等)。
      • ItemProcessor :负责对读出来的数据进行非法校验和对数据进行加工。
      • ItemWriter:将数据写到某个目标中(如文件、数据库等)。
  • JobBuilderFactory:作业构建起工厂,用于构建作业Job对象。
    • get(String name):设置作业名称。
    • start(Step step):设置作业启动的第一个步骤。
    • build():构建Job对象。
  • StepBuilderFactory:作业构建器工厂,用于构造步骤Step对象。
    • get(String name):设置步骤名称。
    • tasklet(Tasklet tasklet):设置Tasklet。
    • build():构建Step对象。
  • JobRepository:作业持久化,在执行作业的过程中用于操作spring batch相关的表,记录作业的相关状态等。

Tasklet方式示例

运行环境

$ java -version
java version "1.8.0_361"
Java(TM) SE Runtime Environment (build 1.8.0_361-b09)
Java HotSpot(TM) 64-Bit Server VM (build 25.361-b09, mixed mode)

spring-batch依赖

<!-- spring-batch -->
<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><!-- h2、mysql... -->
<dependency><groupId>com.h2database</groupId><artifactId>h2</artifactId><scope>runtime</scope>
</dependency>

备注:第一次照着网上的文章写代码运行,直接报错,原因是缺少引入的依赖;需要引入数据库驱动,如H2或mysql

项目结构

$ tree 
.
├── pom.xml
└── src└── main├── java│   └── com│       └── example│           └── demo│               ├── HelloWorldApplication.java│               ├── config│               │   └── BatchConfig.java│               └── task│                   └── HelloWorldTasklet.java└── resources

完整依赖pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.7.7</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.example</groupId><artifactId>demo</artifactId><version>0.0.1-SNAPSHOT</version><name>demo</name><description>Demo project for Spring Boot</description><properties><java.version>1.8</java.version><mybatis-plus.version>3.5.2</mybatis-plus.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><scope>runtime</scope><optional>true</optional></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><!-- spring-batch --><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>com.h2database</groupId><artifactId>h2</artifactId><scope>runtime</scope></dependency><!-- test --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><scope>test</scope></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><configuration><excludes><exclude><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></exclude></excludes></configuration></plugin></plugins></build></project>

编写业务逻辑

package com.example.demo.task;import org.springframework.batch.core.StepContribution;
import org.springframework.batch.core.scope.context.ChunkContext;
import org.springframework.batch.core.step.tasklet.Tasklet;
import org.springframework.batch.repeat.RepeatStatus;
import org.springframework.stereotype.Component;/*** 任务*/
@Component
public class HelloWorldTasklet implements Tasklet {@Overridepublic RepeatStatus execute(StepContribution contribution, ChunkContext chunkContext) throws Exception {System.out.println("Hello, World!");return RepeatStatus.FINISHED;}
}

配置作业步骤

package com.example.demo.config;import com.example.demo.task.HelloWorldTasklet;
import org.springframework.batch.core.Job;
import org.springframework.batch.core.Step;
import org.springframework.batch.core.configuration.annotation.JobBuilderFactory;
import org.springframework.batch.core.configuration.annotation.StepBuilderFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;/*** Spring Batch配置*/
@Configuration
public class BatchConfig {@Autowiredprivate JobBuilderFactory jobBuilderFactory;@Autowiredprivate StepBuilderFactory stepBuilderFactory;@Autowiredprivate HelloWorldTasklet helloWorldTasklet;@Beanpublic Step step() {return this.stepBuilderFactory.get("step").tasklet(helloWorldTasklet).build();}@Beanpublic Job job(Step step) {return this.jobBuilderFactory.get("job").start(step).build();}
}

启动类增加注解:@EnableBatchProcessing

package com.example.demo;import org.springframework.batch.core.configuration.annotation.EnableBatchProcessing;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;@EnableBatchProcessing
@SpringBootApplication
public class HelloWorldApplication {public static void main(String[] args) {SpringApplication.run(HelloWorldApplication.class, args);}}

Chunk方式示例

项目结构

$ tree
.
├── pom.xml
└── src└── main├── java│   └── com│       └── example│           └── demo│               ├── Application.java│               ├── config│               │   └── BatchConfig.java│               ├── dto│               │   └── Person.java│               └── processor│                   └── PersonItemProcessor.java└── resources└── persons.csv

依赖pom.xml 同上

package com.example.demo.dto;import lombok.Data;@Data
public class Person {private String name;private Integer age;
}
package com.example.demo.config;import com.example.demo.dto.Person;
import com.example.demo.processor.PersonItemProcessor;
import org.springframework.batch.core.Job;
import org.springframework.batch.core.Step;
import org.springframework.batch.core.configuration.annotation.JobBuilderFactory;
import org.springframework.batch.core.configuration.annotation.StepBuilderFactory;
import org.springframework.batch.item.file.FlatFileItemReader;
import org.springframework.batch.item.file.builder.FlatFileItemReaderBuilder;
import org.springframework.batch.item.json.JacksonJsonObjectMarshaller;
import org.springframework.batch.item.json.JsonFileItemWriter;
import org.springframework.batch.item.json.builder.JsonFileItemWriterBuilder;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.FileSystemResource;/*** Spring Batch配置*/
@Configuration
public class BatchConfig {@Autowiredprivate JobBuilderFactory jobBuilderFactory;@Autowiredprivate StepBuilderFactory stepBuilderFactory;@Beanpublic Step step() {return this.stepBuilderFactory.get("step").<Person, Person>chunk(10).reader(reader()).processor(processor()).writer(writer()).build();}@Beanpublic Job job(Step step) {return this.jobBuilderFactory.get("job").start(step).build();}/*** 读取csv文件* @return*/@Beanpublic FlatFileItemReader<Person> reader() {return new FlatFileItemReaderBuilder<Person>().name("personItemReader").resource(new ClassPathResource("persons.csv")).delimited().names(new String[] {"name", "age"}).targetType(Person.class).build();}/*** 处理器* @return*/@Beanpublic PersonItemProcessor processor() {return new PersonItemProcessor();}/*** 写到json文件* @return*/@Beanpublic JsonFileItemWriter<Person> writer() {return new JsonFileItemWriterBuilder<Person>().jsonObjectMarshaller(new JacksonJsonObjectMarshaller<>()).resource(new FileSystemResource("persons.json")).name("personItemWriter").build();}}
package com.example.demo.processor;import com.example.demo.dto.Person;
import org.springframework.batch.item.ItemProcessor;public class PersonItemProcessor implements ItemProcessor<Person, Person> {@Overridepublic Person process(Person person) throws Exception {// 为每个对象年龄+1person.setAge(person.getAge() + 1);return person;}
}

启动入口

package com.example.demo;import org.springframework.batch.core.configuration.annotation.EnableBatchProcessing;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;@EnableBatchProcessing
@SpringBootApplication
public class Application {public static void main(String[] args) {SpringApplication.run(Application.class, args);}}

启动SpringBoot即可运行任务

读取的persons.csv文件

Tom,18
Jack,20

生成的persons.json 文件

[{"name":"Tom","age":19},{"name":"Jack","age":21}
]

参考文章

  1. SpringBatch从入门到实战(二):HelloWorld
  2. Spring Batch 之 Hello World
  3. Spring Batch 入门级示例教程
  4. Spring Batch 批处理框架优化实践,效率嘎嘎高!
http://www.15wanjia.com/news/194073.html

相关文章:

  • 手机端做的优秀的网站商城网站的运营
  • 威海做企业网站的公司撰写网站建设技术解决方案
  • 新手建设html5网站推荐一本学做网站的书
  • 扶风网站建设快速做效果图的网站叫什么
  • 广告设计制作公司网站辽宁建设工程信息网业绩录入规定
  • 建设企业网站需要注意的问题wordpress 用户管理
  • 互联网营销师是哪个部门发证seo标题优化是什么意思
  • 网络书城网站开发 需求分析广州建设网站的公司简介
  • 专业的上海网站建设公司排名网站制作进度表
  • 网站 东莞长安模板网站和定制网站后缀的区别
  • 网站前期基础建设 怎么写做网站三网多少钱
  • wordpress更新服务评论对网络平台的优化有哪些建议
  • 做网站界面多少钱快速网站优化哪家好
  • 可视化网站开发系统介绍台州 网站建设
  • 用凡科网做网站怎么保存到桌面网站建设部门
  • 新网站建设信息种子搜索神器在线搜
  • linode wordpress建站手机网站大全
  • 建设网站的费用吗网站建设实验小结
  • 网站项目建设目标深圳建网站需要多少钱
  • 赣州建设局网站wordpress调用文章列表
  • 广州住房与建设 网站福州做网站制作
  • 顺的网站建设精英郑州到安阳
  • 青岛网站开发工资象山网站优化公司
  • 成都龙泉建设有限公司网站酒店网站开发回扣
  • 网站建设地址 北京神码ai智能写作网站
  • 河北建设集团有限公司网站开发网站公司的简介
  • 深圳市住房和城乡建设厅网站首页招标代理公司注册
  • 泉州市住房与城乡建设局网站干部信息管理系统
  • 重庆自助模板建站在线网站创做简历
  • 简单网站开发流程图西安建设网站电话